4

ARCでオブジェクトを破棄する正しい方法は何ですか?

UIViewController実行時の特定の時間に、いくつかのsとAUGraphを保持しているオブジェクトを破棄したいと思います。

現時点では、親のviewcontrollerがviewcontrollerオブジェクトを作成し、それらのビューをそのオブジェクトに割り当てるとview、オブジェクトは明らかに親と一緒に存続します。これらの子ViewControllerは、不要になった瞬間に破棄したいと思います。

4

3 に答える 3

12

それらのオブジェクトを参照する変数をに設定するだけですnil。その後、コンパイラはその時点でオブジェクトを解放し、オブジェクトへの強力な参照が他に存在しない場合、オブジェクトは破棄されます。

于 2012-07-12T13:55:43.970 に答える
3

オブジェクトを参照する変数を[release]に設定すると、ARC は への呼び出しを挿入します。__strongnil

@interface MyViewController : UIViewController {
    UIViewController *childViewController;
}
...

@end

-(void)destroyChild {
    childViewController = nil;
}

オブジェクトの C スタイルの配列がある場合も同じことが行われます。配列の要素を設定して、/nilでない限り、そこにあったアイテムを解放します。子ビュー コントローラーを に保持する場合、配列からオブジェクトを削除すると、その参照カウントが減少します。__weak__unsafe_unretainedNSMutableArray

于 2012-07-12T13:56:21.557 に答える
1

通常、これはオブジェクトを nil に設定することで実現できます。舞台裏で起こっていることは、オブジェクトが ARC によって解放され、その後 nil に設定されることです。これにより、目的が達成されるはずです。

于 2012-07-12T13:56:48.900 に答える