いまどきのiOSプログラミング with Xcode5

8,568 views

Published on

Published in: Technology

いまどきのiOSプログラミング with Xcode5

  1. 1. いまどきの  iOS プログラミング with Xcode 5 伊勢  シン 2013/10/12 (Sat) プログラミング⽣生放送勉強会  第26回@⼤大阪
  2. 2. ⾃自⼰己紹介 •  伊勢  シン / 伊藤  伸裕 –  @iseebi / id:iseebi •  スマートフォンアプリ作ってます。 –  iPhone / Android •  コミュニティ –  スマートフォン勉強会@関⻄西 •  最近は平⽇日夜のXamarin.Androidハンズオン 「すまべんLite」シリーズで細々継続中 –  すごいHaskell読書会 in ⼤大阪 •  H本読んでます。次回15⽇日
  3. 3. まずはききたい •  iOSプログラミングやったことある⼈人 •  やったことあるけど挫折した⼈人 –  何がわからなかった? •  普段どんな⾔言語つかってる? –  Java / PHP / Perl … –  Objective-Cやってるひともかなりいるっぽいんですが… •  「っつーかプログラミングやったことねー」って⼈人
  4. 4. むかしの  iOS プログラミング •  メモリ管理理意味不不明 – alloc / init / release / autorelease … – 簡単にクラッシュする •  書くのが⼤大変 – ヘッダにプロパティ書いたら @synthesize かかないと – メソッドの順番を考慮しないといけない •  画⾯面遷移どうやって作るの? •  iPhone 5 で解像度度増えやがった! •  ライブラリ⼊入れるの、プロジェクトに ソースコード追加するとかわりと泥泥臭い。
  5. 5. いまの  iOS プログラミング •  ARC のおかげでお約束がだいぶ簡単になった! – 「たった4つのお約束」を守れば、そうクラッシュしない •  書き⽅方に対する制限が減った – @synthesize かかなくてOK – メソッドの順番気にしなくてOK – ラムダっぽいのもいける •  画⾯面遷移もGUIで作れるようになった •  CocoaPods でライブラリを管理理できるようになっ た。
  6. 6. ところで  iOS 7 対応って地獄ってきくけど •  そもそもデザイン変わったからあわせないと… •  iOS 5/6までの⽅方法で作ってたアプリが 軒並み画⾯面ずれ –  ⾒見見た⽬目がんばってたアプリほど悲しい思いをすることに •  激しい⾮非推奨の嵐嵐 –  ⽂文字列列から直接画⾯面に描画するメソッド等 •  iPhone 5s 64bit対応 –  int とか long とかやばい •  6以上でARC,Storyboard,Autolayoutなやつを 7に対応するのはそんな⼤大変じゃなかった。 •  結論論:(6より)昔のことは忘れましょう。      (7より)未来のことを考えましょう。
  7. 7. 今⽇日お伝えすること •  ほかのプラットフォームで開発したことはあるけど、 iOS 開発はちょっとわからない/挫折した⼈人向けに 今⾵風の  iOS プログラミングをおみせします。 –  Xcode の操作⽅方法込みで、触りながらみていきます。 –  とはいえ僕も全部理理解しているわけじゃないので、 突っ込み⼤大歓迎! •  これだけ覚えていればだいたいOK。 伊勢的 Objective-C クラスの書き⽅方チャート •  Storyboard の使い⽅方と Autolayout を使った 6/7 両対応 •  CocoaPods を使ったライブラリの使⽤用 (時間あれば)
  8. 8. 伊勢的 Objective-C クラス 書き⽅方チャート 他の⾔言語をやったことのあるけどObjective-Cはじめての⼈人は これだけ覚えておけば、まずは⼤大丈夫!
  9. 9. クラスの構成 •  @interface と @implementationにわかれてる。 •  1つのクラスに対して複数 @interface を書け、 メソッドを追加できる。 – 2つめ以降降は @interface ClassName(Hoge) と、 カテゴリをつける。 – 同じプロジェクトの中に @implementation があれば、 プロパティもかける。 – 無名のカテゴリをインプリメンテーションに書いて、 プライベートな宣⾔言にするのが常套⼿手段。
  10. 10. チャート1: どこに何を書くか 公開メソッド 公開プロパティ ⾮非公開プロパティ 実装
  11. 11. チャート1 補⾜足 •  クラス変数は特別な事情がない限り使わない。 – ⾮非公開プロパティにする。 •  公開しないメソッドは宣⾔言に含めない。 •  @synthesize も不不要になってるので書かない。 – 古いサンプルコピペしてくるときは注意
  12. 12. Xcode のエディタを便便利利に使おう •  Assistant Editor を開くと並べてみれるよ! – ⌥⌘↩ で直接開けます。⌘↩で閉じれます。 •  ⾒見見失ったら「Counterparts」をえらびなおそう •  ⼊入⼒力力補完は  ⎋  で出てくるよ! – でもわざわざ押さなくても、 ⼊入⼒力力してたらわりとさくさくっと出てきます。 •  ⌘: command, ⌥ option (alt), ⎋ : esc
  13. 13. Objective-C のクラスに書けるもの •  プロパティ •  クラスメソッド •  インスタンスメソッド •  クラス変数 – 今はあまり使わない @property (assign, nonatomic) NSInteger step; + (id) valueWithData:(NSData *)data; - (void) introduceToUserWithTitle:(NSString *)title;
  14. 14. Objective-C の変数型 •  ⼤大きく分けて3つある。 Objective-Cの クラスインスタンス NS… UI… とかの、Objective-C のクラスインスタンス。 Objective-C のオブジェクトだけ使ってるときは、 * のついてるやつがこれにあたる。 (実際はCベースの関数使ったりするとこの限りではない) 数値型 int long などの数値。あるいはenum値。 64bit 対応のために、なるべく  NSInteger などの 定義されている⽅方を使った⽅方がよい Blocks ラムダ的なインライン関数 void (^completionBlock)(BOOL isSuccess);
  15. 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. 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. 17. メモリ管理理 4つのお約束 •  ARCを使おう – ARC = Automatic Reference Counter •  iOS 5 のころから使えるようになったメモリ管理理⽅方法 •  参照カウンタ管理理をコンパイラが⽣生成してくれます。 •  クラスに保存する値はプロパティを使おう – クラス変数を使わない •  Blocks の中では weak self を使おう •  コールバック⽤用で保持するものは  weak を使おう – delegate など
  18. 18. Xcode 5 + Storyboard を使った 開発 Demo
  19. 19. まとめ •  Objective-C のメモリ管理理・クラスの書き⽅方は ARCを使って、最低限のルールを覚えればこわく ありませんよ。 •  Storyobard をつかえば簡単にUIや画⾯面遷移を つくれます。 •  6/7両対応はデザインのことをひとまず横において おけば、Autolayoutをつかえば簡単。 – 5のことはもうわすれよう

×