だから、私はクラスを持っています:
@interface Controller : NSObject
{
UILabel* fileDescription;
}
@property(strong, nonatomic) UILabel* fileDescription;
プロパティfileDescriptionがnilになるメソッドdeallocを使用する必要がありますか?
例えば:
-(void)dealloc
{
fileDescription = nil;
}
そうでない場合、誰がfileDescriptionによって使用されたメモリを破棄しますか?
一般に、ARCはインスタンス変数の有効期間を管理するため、サブクラス化されたdealloc
メソッドを提供する必要はありません。
ただし、クリーンアップを実行すると便利な場合がありますオブジェクトの解放以外。たとえば、オブザーバを削除したり、ネットワーク接続をクリーンに閉じたりする場合などです。したがって、ARCでdealloc
をサブクラス化できますが、サブクラス化されたメソッド内から[super dealloc]
を呼び出すことはできません。
ただし、特定のケースでは必要ありません。
番号。
dealloc
にARC
メソッドは必要ありません。
ただし、ビューが閉じられたり解放されたりしたときにクリーンアップタスクを実行する場合。最適な場所です。そのような場合は実装できます。
例:
ビューでタイマーを実行しており、ビューを更新しています。ビューが閉じられたら、そのタイマーを停止する必要があります。その状態で、deallocメソッドを使用してタイマーを停止できます。
NSNotification
オブザーバーでも同様です。
ARCを使用している場合。
Deallocとreleaseを使用する必要はありません。コンパイラは、プロパティとオブジェクトが強い/弱いことを知っているので、それを管理します。
編集:
CG...
&CF...
などのコアフレームワークオブジェクトを使用する場合は、dealloc
メソッドが必要です。通知のオブザーバーを作成しても、それを削除する必要があり、dealloc
がremoveObserverに最適な場所です。
AnsはNOです。ARCを使用すると、割り当てを解除する必要がないためです。
ARCを使用しているので、dealloc
を使用する必要はありません。Complierは、プロパティ、変数、またはコントロールのスコープに応じてautoreleasePoolを設定します。そして、release
メモリになります。通常、autoreleasepoolにはさまざまなタイプがあり、それらを関数レベル、クラスレベルなどとして定義できます。これが役立つことを願っています。