ARCの下ARCでは、ループ用の@autoreleasepoolを作成することをお勧めしますか?
NSData* bigData = ...
while(some condition) {
NSData* smallData = [bigData subdataWithRange:...];
//process smallData
}
...のは、私は自動解放のNSDataオブジェクトの束を返すループを持っているとしましょう、私はまだwhile
条件の周り@autoreleasepool
をラップする必要がありますか?
NSData* bigData = ...
@autoreleasepool {
while(some condition) {
NSData* smallData = [bigData subdataWithRange:...];
//process smallData
}
}
私が求めている理由は、私がinitWith...
方法とは対照的に、dataWith...
メソッドを呼び出し、私のNSDataオブジェクトの屋根を通過する機器の生活割り当て数を参照してくださいです。 initWith...
を使用すると、生きている割り当て数はずっと少なくなります。
可能な限りinitWith...
メソッドを使用する方がよいですか?
すばらしいリンクをありがとう! –
@ Chuckの答えによると、@autoreleasepoolはループを実行する必要があります。イディオムは、@autoreleasepool {while(x){...}}ではなく 'while(x)@autoreleasepool {...}'です。 – Quuxplusone
これはあまり単純化されず、正しくありません。 ARCは、+0オブジェクトを返すメソッドの自動解放プールの使用を最適化することがよくあります(これは、ほとんどの場合、 'autorelease'を使用しています)。 –