@autoreleasepool {
for (long i = 0; i < 1000000000; i++) {
Person *per = [[Person alloc] init];
[per autorelease];
}
}<pre name="code" class="objc">此时会造成内存堆积,因为for循环所alloc出来的所有堆区空间内存只有在出了该自动释放池才被统一释放<pre name="code" class="objc">解决方案:
@autoreleasepool {
for (long i = 0; i < 1000000000; i++) {
@autoreleasepool {
Person *per = [[Person alloc] init];
[per autorelease];
}
}
}<pre name="code" class="objc">每循环一次所alloc出的堆内存空间在出了离他最近的自动释放池之后,立即释放