2011-10-19 18 views

答えて

4

この@ autoreleasepool { }は、ARCはまだ

[[NSString alloc] init] 
いずれかを実行する必要があります

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
// Code benefitting from a local autorelease pool. 
[pool release]; 

に相当します

または

[NSString string] 

ARCの下では、カジュアルプログラマーの視点と違いはありません。コンパイルされたコードの下には、[NSString string]によって返されたオブジェクトがプールに入れられ、後で解放されます。 initedのものは、スコープから外れる直前にコンパイラによって挿入されたリリースを持つでしょう。

ARCを使用していない場合は、後でstringによって返されたオブジェクトに対してreleaseを呼び出す必要があります。

+0

それを無効にする必要があることを示唆するのは多少間違いです。実際には-deallocを直接呼び出す初心者につながる可能性があります。これは間違っています。 –

+0

私の悪い、私は解放を意味したが、その部分がARCの下で完全に間違っていたことに気づいた。古い習慣は激しく死ぬ。 – logancautrell

+0

私はちょっと混乱していますので、私のコードは@autoreleasepool {}の中に入ります。私はまだコードの最後にプールをリリースしなければなりませんか? – Gmenfan83