0

自動解放機能についていくつか質問があります。

ご意見をお聞かせください..

Q1) 自動解放されたオブジェクトに対して保持または解放を呼び出すことについて、意味や価値はありますか?

ex1) 
 UIView *viewTest = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease];
[self.view addSubview:viewTest];

この状態でviewtestオブジェクトは今後公開されるのでしょうか?または、「[viewTest release];」という行を追加する必要がありますか?

例2)

UIView *viewTest = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease];
[viewTest release];

この場合、viewTest は autorelease になりますか?

Q2) 自動解放されたオブジェクトはどこで破棄されますか?

4

2 に答える 2

0

autoreleaseメソッドからオブジェクトを返すなどの状況のた​​めに考えられているため、呼び出し元は使用後にオブジェクトを解放する必要はありません。

ex2 は 2 回リリースされるため、問題が発生するはずです。

自動解放されたオブジェクトは、プールが空になると破棄されます。

于 2012-08-08T12:36:35.767 に答える
0

Q1) 自動解放されたオブジェクトに対して保持または解放を呼び出すことについて、意味や価値はありますか?

そうではありませんが、とにかく autoreleasepool が排出されると、オブジェクトは解放されます。これを見てください

Q2) 自動解放されたオブジェクトはどこで破棄されますか?

自動解放されたオブジェクトは、NSAutoreleasePoolドレーンされるとき、または@autoreleasepool基本的に同じことを行う構造の最後に破棄されます。

于 2012-08-08T12:34:45.890 に答える