2009-06-17 14 views
6

スーパークラスのメソッドを最後に呼び出すかどうかは重要ですか?例ObjectiveCではスーパークラスのメソッドを呼び出すタイミングが重要ですか?

-(void)didReceiveMemoryWarning { 
    /* do a bunch of stuff */ 

    [super didReceiveMemoryWarning]; 
} 

私はちょうど文体、あるいは哲学的でない意味の違い、(それらは歓迎されているが、探していますなどviewWillAppear、willRotateToInterfaceOrientationのような他の方法で同じ質問

-(void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 

    /* do a bunch of stuff */ 
} 

対のためにあまりにも)。

答えて

6

典型的なココアの大会:

  1. は、セットアップを実行している場合場合は、
  2. スーパーFIRST を呼び出します テイクダウンを実行しています。スーパーLAST

したがって、初期化、viewDidLoadなどは、最初のケースに該当します。メモリ警告、viewDidUnload、およびdeallocは、2番目のケースの下にあります。

また、この規則に従ってクラスを設計する必要があります。偏差には特に注意する必要があります。

`[super viewDidLoad]` convention


を追加するには:SO答える関連

根拠をセットアップ中に最初のスーパーを呼び出すためには、あなたが機能を拡張する前に、すべての場所にあることを確認したいということです。結果として、割り当てを解除するときに、スーパークラスのivarsがサブクラスを処理する機会を得る前に、そのサブクラスが割り当て解除されている必要はありません。

これは、以下のコメントに記載されているように、UIのアップデートに関しても意味があります。

+0

どのようにその評価でwillRotateToInterfaceOrientationを分類しますか? – fnCzar

+2

私の意見では、セットアップされていると思います。私はスーパークラスがそのオブジェクト(ルートビューオブジェクトを含む可能性が高い)の回転を実行し、その後にあなたが(おそらくサブビューである)を処理したいと思うでしょう。 –

6

機能に依存して、スーパークラスの後に何かしたいこともあれば、前にしたいこともあります。

たとえば、スーパークラスにいくつかのUI要素があり、それを拡張すると、クラスにはさらにいくつかのUI要素が保持されます。オブジェクト全体にフィットするようにサイズを取得するには、おそらくスーパークラスを呼び出して要素のサイズを計算し、追加した要素のサイズをそのサイズに加算します。

スーパークラスは要素を認識しないため、計算が上書きされます。ここでも、これは実装に依存します。

あなたが最後のものとしてスーパーメソッドを呼び出す必要があり、特定のケースがあります:

-(void)dealloc 
{ 
    ... 
    [super dealloc]; 
} 
関連する問題