ARC 하에서 루프 용 @autoreleasepool을 만드는 것이 좋습니다.
NSData* bigData = ...
while(some condition) {
NSData* smallData = [bigData subdataWithRange:...];
//process smallData
}
은 ARC에서, 나는 여전히 while
조건 주위 @autoreleasepool
을 포장한다 ...의 내가 오토 릴리즈있는 NSData 객체의 무리를 반환하는 루프가 있다고 가정 해 봅시다?
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는 종종 autorelease pool의 사용을 +0 객체를 반환하는 메소드에 최적화합니다 (대부분 autorelease 사용을 사용합니다). –