3

インスタンス変数はdealloc(以下に示すように)でリリースされることを理解していますが、正確にはいつ呼び出されますか?すべてのインスタンス変数はアプリの終了時に解放されますか、それとも不要になったときに個別に割り当てを解除するための受け入れられた方法がありますか?

- (void)dealloc {
    [fred release];
    [wilma release];
    [barney release];
    [betty release];
    [super dealloc];
}
4

1 に答える 1

7

他のオブジェクトと同様に、アプリデリゲートは、他のオブジェクトが保持していない場合に割り当てが解除されます。アプリが終了するまで固執しないアプリデリゲートがあることは非常に珍しいことであり、他の人が指摘しているように、アプリは終了する直前に何かを解放して割り当てを解除することを気にしないかもしれません。

アプリ以外のオブジェクトがそれを保持しておらず、アプリケーションに新しいデリゲートを与えた場合、アプリデリゲートの割り当てが解除されるのは間違いないと思います。その異常な状況を除けば、アプリデリゲートの-deallocメソッドはおそらくまったく頻繁に呼び出されません。ただし、それは正しく実装すべきではないという意味ではありません。これは予想される動作であり、将来のiOSリリースで状況が簡単に変わる可能性があります。

于 2011-03-05T06:43:37.767 に答える