iPhone開発で最初に躓きがちな事

written by shn, on Mar 25, 2010 8:01:00 PM.

思いついたら随時更新していきます。 これも追加しろ!とか、間違ってるぞ!とかあったらコメントください。

ObjC周り

参照カウンタ

参照カウンタについて、呼び出し側が責任を持ってreleaseする必要があるのはinit系copy系を呼んだ時のみ。 これ以外は、呼び出され側(なんていうんだ?)が参照カウンタを持っている(か、例えばautoreleaseしてある)

リリースする前にBuild And Analyze

リリースする前に必ずBuild And Analyze(Shift+Cmd+A)をしよう。メモリリークやらなにやらを指摘してくれる。

NSNull vs nil

[NSDictionary dictionaryWithObejctsAndKeys]ではセンチネルとしてnilを使うが、nilを値として設定したい時もある。 その場合は代わりに印として[NSNull null]を使う。 nilの場合はNull Object Pattern的に、全てのセレクタ呼びだしは無視されるが、NSNullに何か呼びだすと例外が出るので注意。

STLが使いたい!!

hogehoge.mmとかにすればObjective-C++としてコンパイルしてくれるので、stlも使えるよ。

Interface Builder周り

File's Ownerを設定する

自作ViewControllerのxibを作って「あれれーロードされないぞ」って事になったら、File's OwnerがNSObjectのままになっていないかチェック

Subviewのpropertyはassignにする

subviewはviewが参照カウンタをもっているのでretainにする必要はない(retainにした場合、明示的にreleaseする事)

XCode周り

なんかミラクルおかしい!

オーガナイザーが糞重くなったり、ビルドしたけど謎のエラーで実行できなくなったりしたらとりあえずXCodeを再起動させてから考えると良いと思う。

リファレンスを見る

変数名などをOption+Clickするとヘルプが出てきます。

その他

UI周りの操作はMain Threadで行う。

UIに関する操作(例えばpushViewControllerとか)はmain threadで行うのが無難(詳しく追ってないので、経験上、としか言えないけど…) 別スレッドから操作したい時は、performSelectorOnMainThreadを呼べば楽。

Comments

  • UIに関する操作はmain threadで行わないとだめってリファレンスのどこかに書いてありましたよー

    Comment by ku — Mar 25, 2010 8:37:39 PM | # - re

Leave a Reply