More Related Content
Similar to いまどきのiOSプログラミング with Xcode5 (20)
いまどきのiOSプログラミング with Xcode5
- 2. ⾃自⼰己紹介
• 伊勢 シン / 伊藤 伸裕
– @iseebi / id:iseebi
• スマートフォンアプリ作ってます。
– iPhone / Android
• コミュニティ
– スマートフォン勉強会@関⻄西
• 最近は平⽇日夜のXamarin.Androidハンズオン
「すまべんLite」シリーズで細々継続中
– すごいHaskell読書会 in ⼤大阪
• H本読んでます。次回15⽇日
- 4. むかしの iOS プログラミング
• メモリ管理理意味不不明
– alloc / init / release / autorelease …
– 簡単にクラッシュする
• 書くのが⼤大変
– ヘッダにプロパティ書いたら @synthesize かかないと
– メソッドの順番を考慮しないといけない
• 画⾯面遷移どうやって作るの?
• iPhone 5 で解像度度増えやがった!
• ライブラリ⼊入れるの、プロジェクトに
ソースコード追加するとかわりと泥泥臭い。
- 5. いまの iOS プログラミング
• ARC のおかげでお約束がだいぶ簡単になった!
– 「たった4つのお約束」を守れば、そうクラッシュしない
• 書き⽅方に対する制限が減った
– @synthesize かかなくてOK
– メソッドの順番気にしなくてOK
– ラムダっぽいのもいける
• 画⾯面遷移もGUIで作れるようになった
• CocoaPods でライブラリを管理理できるようになっ
た。
- 6. ところで iOS 7 対応って地獄ってきくけど
• そもそもデザイン変わったからあわせないと…
• iOS 5/6までの⽅方法で作ってたアプリが
軒並み画⾯面ずれ
– ⾒見見た⽬目がんばってたアプリほど悲しい思いをすることに
• 激しい⾮非推奨の嵐嵐
– ⽂文字列列から直接画⾯面に描画するメソッド等
• iPhone 5s 64bit対応
– int とか long とかやばい
• 6以上でARC,Storyboard,Autolayoutなやつを
7に対応するのはそんな⼤大変じゃなかった。
• 結論論:(6より)昔のことは忘れましょう。
(7より)未来のことを考えましょう。
- 9. クラスの構成
• @interface と @implementationにわかれてる。
• 1つのクラスに対して複数 @interface を書け、
メソッドを追加できる。
– 2つめ以降降は @interface ClassName(Hoge) と、
カテゴリをつける。
– 同じプロジェクトの中に @implementation があれば、
プロパティもかける。
– 無名のカテゴリをインプリメンテーションに書いて、
プライベートな宣⾔言にするのが常套⼿手段。
- 12. Xcode のエディタを便便利利に使おう
• Assistant Editor を開くと並べてみれるよ!
– ⌥⌘↩ で直接開けます。⌘↩で閉じれます。
• ⾒見見失ったら「Counterparts」をえらびなおそう
• ⼊入⼒力力補完は ⎋ で出てくるよ!
– でもわざわざ押さなくても、
⼊入⼒力力してたらわりとさくさくっと出てきます。
• ⌘: command, ⌥ option (alt), ⎋ : esc
- 13. Objective-C のクラスに書けるもの
• プロパティ
• クラスメソッド
• インスタンスメソッド
• クラス変数
– 今はあまり使わない
@property (assign, nonatomic) NSInteger step;
+ (id) valueWithData:(NSData *)data;
- (void) introduceToUserWithTitle:(NSString *)title;
- 14. Objective-C の変数型
• ⼤大きく分けて3つある。
Objective-Cの
クラスインスタンス
NS… UI… とかの、Objective-C のクラスインスタンス。
Objective-C のオブジェクトだけ使ってるときは、
* のついてるやつがこれにあたる。
(実際はCベースの関数使ったりするとこの限りではない)
数値型
int long などの数値。あるいはenum値。
64bit 対応のために、なるべく NSInteger などの
定義されている⽅方を使った⽅方がよい
Blocks
ラムダ的なインライン関数
void (^completionBlock)(BOOL isSuccess);
- 15. チャート2: プロパティの書き⽅方
@property (copy, nonatomic) NSString *title;
@property (strong, nonatomic) NSMutableArray *values;
@property (assign, nonatomic) NSInteger step;
変数の型 書くべきキーワード
Objective-Cの
オブジェクト
通常のオブジェクト strong
Mutableがある型
(NSString 等)
copy
なくなってもいい(弱参照) weak
数値やenum値 assign
Blocks copy
- 16. Blocks常套パターン
• Blocks の中で self (⾃自⼰己参照) をつかうと
循環参照で self が永遠に破棄されなくなる!
• Blocks の外で __weak をつけた変数に
代⼊入してから使う。
– 型は __typeof(self) としておくと、
どこにコピペしてもちゃんと補完が効く
• スニペットに登録すると簡単に⼊入⼒力力できる。
__weak __typeof(self) bself = self;
[UIView animateWithDuration:0.5
animations:^{
bself.view.alpha = 0.5;
}];
- 17. メモリ管理理 4つのお約束
• ARCを使おう
– ARC = Automatic Reference Counter
• iOS 5 のころから使えるようになったメモリ管理理⽅方法
• 参照カウンタ管理理をコンパイラが⽣生成してくれます。
• クラスに保存する値はプロパティを使おう
– クラス変数を使わない
• Blocks の中では weak self を使おう
• コールバック⽤用で保持するものは weak を使おう
– delegate など