假设我有一个循环,返回一堆自动释放的NSData对象...
NSData* bigData = ...
while(some condition) {
NSData* smallData = [bigData subdataWithRange:...];
//process smallData
}
在 ARC 下,我是否仍需要在 while
循环条件周围包装一个 @autoreleasepool
块?
NSData* bigData = ...
@autoreleasepool {
while(some condition) {
NSData* smallData = [bigData subdataWithRange:...];
//process smallData
}
}
我问的原因是,对于调用dataWith...
方法的NSData对象,我发现仪器中的实时分配计数飙升了。而对于initWith...
方法,实时分配计数要少得多。
如果可能的话,最好选择initWith...
方法吗?
while (x) @autoreleasepool { ... }
,而不是@autoreleasepool { while (x) { ... } }
。 - Quuxplusoneautorelease
)。 - Steven Fisher