- (void)viewDidAppear:(BOOL)animated {
<CODE BEFORE>
[super viewDidAppear:animated];
<CODE AFTER>
}
スーパーコールの前後にすべてのコードを配置するには、何が正しいですか?両方の方法で機能しますが、最後まで電話を待つのが良いのか、最初に電話を送信するのが良いのかわかりません。
エンドを応援します
- (void)viewDidAppear:(BOOL)animated {
<CODE BEFORE>
[super viewDidAppear:animated];
<CODE AFTER>
}
スーパーコールの前後にすべてのコードを配置するには、何が正しいですか?両方の方法で機能しますが、最後まで電話を待つのが良いのか、最初に電話を送信するのが良いのかわかりません。
エンドを応援します
一般的な経験則では、(ここのように) セットアップするときに最初に呼び出し、破棄するときに最後に呼び出します。
一般に、コードはsuper の呼び出しの後に配置する必要があります。1 つの明らかな例外は dealloc です。この場合[super dealloc]
、自分でクリーンアップした後に呼び出す必要があります。
実際には、特定のケースに依存します。
初期化/クリーンアップの場合、明らかに、サブクラスはそのスーパークラスの状態に依存するため、初期化してからクリーンアップする必要があります。
一般に、スーパーコールの前後に動作を追加したり、スーパーコールを完全に省略したりする必要がある場合があります (結局、メソッドのオーバーライドはそのためのものです)。
この正確なケースでは、他の回答を参照してください。ただし、viewDidAppear:
は通知のようなメソッドであるため、コードが完全に初期化されたオブジェクトを必要とするか、初期化自体に参加するかによって異なります。
それはあなたが何をしているかによります。使用しているオブジェクトに関するコンテキストを提供できますか?
たとえば、オブジェクトの破棄のコンテキストでは、スーパー ラストを呼び出します。
- (void)dealloc {
[someObj release];
[super dealloc];
}