programmableのブログ -3ページ目

programmableのブログ

ブログの説明を入力します。

UIActionSheetはiPadではポップオーバーになる。
また、showFromBarButtonItemを利用することで、アクションボタンから吹き出しで表示させられるが、
IPhoneではアクションシートの飛び出し方がおかしくなるので、デバイスを識別して、
iPadならshowFromBarButtonItem
iPhoneならShowInViewを呼ぶようにする必要がある。

その場合、[[UIDevice currentDevice: userInterfaceIdiom]で識別すればよい。
iOSではファイル名の拡張子の大文字小文字を区別するが、
OSX(MacOS)では区別しない。

そのため、Xcode上で大文字小文字を間違えたプログラムを実行したときに、
シミュレータは問題なく動作してしまうので注意する必要がある。
iOS6以降ではメモリ不足が生じたときに、
viewが破棄されることが無くなった。

以前はviewが破棄されるが再描画の際にinitが呼ばれないところで
問題が発生するケースがあった。

同時に、viewDidUnloadが非推奨になっている。
いまのところ、このメソッドが呼ばれることが無くなったらしい。

initとviewDidLoadの使い分けにも影響しそうだ。
Objective-CとiOS関連でつまづいたところや覚えておきたいところを。

・initとviewDidLoadの使い分け

initはビュー生成時に一度だけ呼び出される。初期化用メソッド。

viewDidLoadはビューを再表示するたびに呼び出される。

initにおいて[self view]に対する操作を行うと、メモリ不足などによりビューが破棄された場合に
再表示のときにその操作が行われなくなるので、viewDidLoadで行うべき。