7

私の質問はばかげているように聞こえるかもしれませんが、自動解放されたオブジェクトを自動解放としてマークするとどうなるか知りたいです。2回リリースされますか?または何も起こりませんか?例えば:

 Obj * obj = [[Obj create] autorelease];

[Obj create]自動解放されたオブジェクトを返すとしましょう。
別の自動リリースを追加すると、どうなりますか?

4

2 に答える 2

5

はい、2 回送信autoreleaseすると、オブジェクトが 2 回解放されます。createメソッドが自動解放されたオブジェクトを返し、それに別のメッセージを送信するautoreleaseと、割り当てが解除されたオブジェクトが解放されるため、アプリがクラッシュします。

そうは言っても、新しい自動参照カウント (ARC)を使用してみませんか? オブジェクトの (自動) 解放について心配する必要はもうありません。

于 2012-09-18T23:44:56.100 に答える
-2

Class Method(+) を使用しているため、メモリを気にする必要はありません。人々がクラス メソッドを使用する理由の 1 つは、autorelease オブジェクトを返すことができることです。クラス メソッドが返すオブジェクトを解放または自動解放すると、クラッシュします。

于 2012-09-19T03:01:53.933 に答える