ここでいくつかの回答を閲覧してきましたが、2 つの異なる提案が得られました。
現在のベストプラクティスはどれですか? 2番目の答えは古い(2010年)ようですので、それは古い、もはや推奨されていない慣習なのだろうか?
ここでいくつかの回答を閲覧してきましたが、2 つの異なる提案が得られました。
現在のベストプラクティスはどれですか? 2番目の答えは古い(2010年)ようですので、それは古い、もはや推奨されていない慣習なのだろうか?
いいえ、init でそのようなことを行うことはありません。
私はviewDidLoadまたはviewWillAppearでさえ、あなたのビューがその時点でそこにない可能性があるため、initでは決してありません。私が始めたときに、そこにないUILabelに文字列を設定していて、アプリをクラッシュさせました。 iPhone 3 のような実際のデバイスよりもはるかに高速であるため、これはシミュレーターで機能しました。
データをリセットしてデリゲートを閉じる場合と同じで、dealloc で設定しないでください。Dealloc は、呼び出されると思っても呼び出されない場合があります。このような操作は、viewWillDissapear または viewWillUnload 内で設定する必要があります。
For a non-XIB-based view controller, the correct place is in -loadView
. -loadView
is responsible for initializing a view controller's view
property, including any subviews. The system will call this method at the appropriate time. You must assign something to the view controller's view
property inside this method:
- (void)loadView
{
UIView *view = ...;
// create additional views here
self.view = view;
}
If you have a XIB-based view controller, the documentation says not to override -loadView
. In this case, you should do additional view initialized work in -viewDidLoad
.