仕事でiPhoneアプリ開発をやるようになって半年が経ちました。面白いね!
その初期の頃に書いていたメモ書きが見つかったので、それを見返しながらまとめてみました。
新しく始める方のお役に立てれば!
##iPhoneアプリ開発の基本
###Q. やり方が分からない
A. とりあえず公式読むのがおすすめ。量が多くて躊躇するけど正しい。
最初に読むなら、以下のリンクの「初めての iOS アプリケーション」。
日本語ドキュメント - Apple Developer
それでも分からないって時は、困った時のドットインストール!これ以上に分かりやすいのはない!
iOSプログラミング入門 (全24回) - プログラミングならドットインストール
###Q. StoryBoardの使い方が分からない
A. ちょっと前までは、これについて詳しく書かれている本や記事がなくて困りましたが、最近はありそう。
これもドットインストールで見ると基本的な使い方は分かります。
仕事で使わなかったのでよく知らない。。
###Q. StoryBoardって使わないの?
A. うちの職場では使ってないです。xibでやってます。
凝ったアプリを作るには、あまり実用的ではない(らしい)というのと、
全画面が1つのファイルになるので、複数人で開発する時に競合が発生しやすい、という理由。
###Q. xibって?
A. StoryBoardが出来る前に使われていた、GUIで画面を作成するツール。
StoryBoardと違ってて画面遷移は担当しない。1画面1ファイル。
クラスを作る時に、「With XIB for user interface」というのを選べば自動的に作られる。
###Q. GUIで作成した画面場の部品(ボタンとか)と、コードのひも付けはどうやってするの?
A. クラス作る時に、「With XIB for user interface」を選んでいれば、画面のxibファイルとクラスは自動で関連づけされます。画面上の部品とコードとのひも付けは、画面上のボタンをcontrolを押しながら .h ファイルにドラッグする。それを押した時の処理のひも付けは、GUI上でも出来るし、コードでも書ける。詳しくは調べれば載ってると思います。自分はコードで書く派。
#####追記
画面上の部品とコードとのひも付けは、画面上のボタンをcontrolを押しながら .h ファイルにドラッグする
コメントで教えて頂きましたが、.m にもドラッグ出来るそうです!
確かに部品のほとんどはpublicでなくていいものが多いので、.m にするケースが多そう。
###Q. コードで書く場合、画面遷移ってどうやるの?
A. 画面遷移は、基本的なパターンが3つあって、設計に応じてその中から使い分ける。
参考:iOSアプリ画面遷移3本勝負 - たーせる日記
###Q. 画面遷移時に実行したい処理はどこに書けばいいの?
A. 以下のような順番でメソッドが実行されるから、そこに書く。
参考:画面遷移時に呼ばれるメソッドの補足 - iPhoneアプリ開発まっしぐら★ - iPhoneアプリ開発グループ
上の記事はシンプルで分かりやすいけど、記事が古いから、iOS5から出来た viewWillLayoutSubviews と viewDidLayoutSubviews が載ってない。詳しくはこちら。アプリ起動した時に実行されるメソッドとかも説明されてますね。
参考:iOS のイベント駆動をライフサイクルイベントとユーザアクションイベントにわけて理解する - A Day In The Life
###Q. 画面間のデータ共有はどうやるの?
A. ややこしいから、最初は以下のページを参考にとりあえず動くものを作ってた。。
参考:iOSゆとりプログラミングのススメ - 仕事人の開発日誌
でもちゃんとやるなら、以下のページを参考にしましょう。
参考:画面間でのデータの受け渡しに付いて: 永遠ログ
###Q. コード書いたのに画面に反映されないんだけど?
A. XCodeで [Product] > [Clean]すれば直るという可能性もありますが、自分がよくやっていたのは、部品を初期化する前に、色々設定していたというケースでした。
具体的にいうと、initWithNibName: 中で設置した Label や Button に文字を設定して、実行しても反映されない!というケース。それは、UIViewController のライフサイクルをもっと勉強しろという話なんだけど、viewDidLoad が実行された後にしないと LabelやButton などの部品は初期化されていないので、それに値を設定しても反映はされません。部品に初期値を設定する場合は、viewDidLoad でしましょう。
##Objective-Cの基本
###Q. プライベート変数やメソッドはどう書くの?
A. こことか参考になります。記事中にもありますが、Objective-Cの分からない事は公式ドキュメントの「Objective-Cによるプログラミング」を読むと良さそう。
参考:イマドキっ子の Objective-C | cockscomb.info
追記(6/14):こっちの方が最近の記事なのでおすすめ。インスタンス変数の宣言の仕方って、色んな情報があって最初分からないですよね。
Modern Objective-Cでのシンプルなプロパティ記述方式 #iPhone #Objective-C #iOS - Qiita [キータ]
###Q. @property, @synthesize て何?
A. 以下のページを参考。XCode4.4からは、@synthesize 省略可能。
参考:Objective-Cの @property と @synthesize の組み合わせが何をやっているのかを解説 - 強火で進め
###Q. 定数定義ってどうやるの?
A. #define か const で、 const が推奨されてるんですかね。
自分は、画面に表示する文字列などは、ファイルをまとめて #defineで宣言してます。
画面に表示する文字列をまとめてたのは、 Localizable.strings でした…!
参考:Selection 9: Objective-cにおける文字列定数について
参考:よく使う数値や文字列をhファイルにまとめる。 - Object for cutie