fan*_*ard 22 iphone objective-c
在循环操作中将大量自动释放的对象放入autoreleasepool中是一种很好的做法.我发现有人把@autoreleasepool放在循环中,但其他人把循环放在@autoreleasepool中.
1:
while ([rs next]) {
@autoreleasepool {
NSDictionary *dict = [self dictFromXX];
//...
}
}
Run Code Online (Sandbox Code Playgroud)
2:
@autoreleasepool {
while ([rs next]) {
NSDictionary *dict = [self dictFromXX];
//...
}
}
Run Code Online (Sandbox Code Playgroud)
哪个更好?或者代码1和2之间有什么区别?
谢谢!
Pau*_*l.s 30
在每次迭代的第一个示例中,池都已耗尽.如果迭代的主体涉及许多自动释放的对象,这是有意义的.
第二个例子只会在循环后一次排空池.
因此,如果循环的内部导致内存膨胀,那么请选择第一个选项.如果整个循环中的内存膨胀是可接受的,则循环然后使用选项2.