コーディング中に、IBOutletsの保持カウントに関する同じ質問が出てきました。NIBからオブジェクトをアーカイブ解除した後、カウントを保持しますか?IBOutletに@propertyを使用するのはいつですか?設定中に保持または割り当てますか?MacとiPhoneの違いは?
そこで、AppleのドキュメントからThe Nib ObjectLifeCycleを読みました。MacとiPhoneのいくつかのテストアプリは私にいくつかの奇妙な結果を与えました。それでも、コーディング中に満足するためにこの問題を処理する方法をいくつか書き留めましたが、コミュニティに確認して、あなたの意見や経験に耳を傾けたいと思いました。
- トップレベルオブジェクトのIBOutletを常に作成します。必要に応じて非トップレベルオブジェクトの場合(アクセスが必要)。
- IBOutletsには常に次のプロパティを提供します(必要に応じて解放します)。
- Macのトップレベルオブジェクト:
- @property(nonatomic、assign)IBOutlet SomeObject * someObject;
- @synthesize someObject;
- [self.someObjectリリース];
- Macのトップレベル以外のオブジェクト(リリースなし):
- @property(nonatomic、assign)IBOutlet NSWindow * window;
- @synthesize someObject;
- iPhoneのトップレベルオブジェクト(保持する必要があります):
- @property(非アトミック、保持)IBOutlet SomeObject * someObject;
- @synthesize someObject;
- [self.someObjectリリース];
- iPhoneのトップレベル以外のオブジェクト(保持する必要があります):
- @property(非アトミック、保持)IBOutlet UIWindow * window;
- @synthesizeウィンドウ;
- [self.windowリリース];
- Macのトップレベルオブジェクト:
サイドノート:
- MacおよびiPhoneでは、可能な場合はセッターを使用してコンセントに接続します。
- トップレベルオブジェクト:「所有オブジェクトがありません[...]」
- 非最上位オブジェクト:「ビュー階層内にネストされたビューなど、親オブジェクトまたは所有オブジェクトを持つオブジェクト」。
したがって、質問は次のようになります。これは正しくて良い習慣ですか?
承認または修正していただければ幸いです。