1

オブジェクトが ARC でどのように解放されるのか理解できませんでした。これについてはまだ混乱が続いています。

メソッドで alloc を使用してView Controllerまたはその他を作成するとします

    -(void) displayView
    {
       RegViewController *sampleView = [[RegViewController alloc] init];
       [sampleView setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
       [sampleView setModalPresentationStyle:UIModalPresentationFormSheet];
       [self presentModalViewController:sampleView animated:YES];
    }

メソッドブロックが完了したときに作成されたオブジェクトを解放しますか、それとも参照に nil を指定して明示的に解放する必要がありますか?

4

4 に答える 4

1

この場合、モーダル ビューが閉じられると、 sampleViewが解放されます。この場合、他に何もする必要はありません。

于 2012-12-05T11:42:47.030 に答える
0
Does it release the object created when the method block completes or we should explicitly release by giving nil to reference?

答えはNOです。

上記の場合、クラスsampleViewへの引数としてこれを渡したため、保持カウントは0に達していません。selfすべての強力な参照がクリアされると、その保持カウントは0になり、その後でのみ解放されます。

あなたは単にあなたのコードを次のように想像することができますRegViewController *sampleView = [[[RegViewController alloc] init] autorelease];

于 2012-12-05T13:35:53.323 に答える
0

ARC は自動参照カウントの略です。オブジェクト参照カウントを維持するためのユーザーの責任を引き継ぎます。そのため、電話をかけることはできませ[obj retain][obj release]。参照カウンターが 0 になるとすぐに解放されます。ガベージ コレクターではないことを覚えておいてください。注意しないと、このメカニズムによってメモリ リークが発生する場合があります。しかし、一般的には非常にうまく機能します。

于 2012-12-05T11:42:18.243 に答える
0

ビュー コントローラーは、ブロックの最後で自動的に解放されます。ただし、これは割り当てが解除されたことを意味するものではありませ。メソッドによって引き続き保持され、presentModalViewController:animated:破棄されると解放 (および割り当て解除) されます。

于 2012-12-05T11:40:47.307 に答える