9

dealloc を上書きして、Objective-C クラスにクリーンアップ コードを作成しようとしています。

-(void)dealloc {
    //cleanup code
    [super dealloc];
}

[super dealloc]ARCが有効な場合、コンパイラによって許可されていないため、これを行うことはできません。私が使用できる代替手段はありますか?

4

2 に答える 2

22

ARCリリースノートへの移行から(強調鉱山):

インスタンス変数の解放以外のリソースを管理する必要がある場合は、dealloc メソッドを実装できます。インスタンス変数を解放する必要はありません (実際には解放できません) が、ARC を使用してコンパイルされていないシステム クラスやその他のコードで [systemClassInstance setDelegate:nil] を呼び出す必要がある場合があります。

ARC のカスタム dealloc メソッドでは、[super dealloc] を呼び出す必要はありません (実際にはコンパイラ エラーが発生します)。スーパーへの連鎖は、コンパイラによって自動化され、強制されます。

deallocしたがって、ARC を使用する場合でも同じ種類のクリーンアップを行うことができますsuper

于 2013-05-03T12:03:02.277 に答える
5

ARC がアクティブなときは、単純に を呼び出さないでください[super dealloc]。ARC がこれを行います。または、呼び出すことができ、基本クラス内から呼び出されるprepareForDeallocメソッドを持つこともできます。superdealloc

于 2013-05-03T11:53:21.270 に答える