自动释放池存储在池本身排出时发送发布消息的对象。
如果你使用自动引用计数(ARC),你不能直接使用自动释放池。相反,你可以使用@autoreleasepool块。
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Code benefitting from a local autorelease pool.
[pool release];
可以写成:
@autoreleasepool {
// Code benefitting from a local autorelease pool.
}
在我们的ARC模式下,我们不可以直接使用自动释放池,可以用@autoreleasepool的block块代替。@autoreleasepool的block块比直接使用NSAutoreleasePool实例使用更有效。即使不是ARC模式,也可以使用。
Q:主线程创建临时变量,什么时候会销毁?