3

可能重复:
ARC 内存泄漏

我们可以在启用 ARC 的项目中使用 @autorelease 池吗?如果是这样,使用@autorelease 池有什么用。我在 google 中发现,即使项目启用了 ARC,它也只会处理主线程。如果我们创建其他线程,那么我们必须注意释放对象。谁能解释

4

2 回答 2

3

是的,ARC 默认只设置在主线程上。但是,您也可以在后台线程中利用它。解决方案很简单:ARC 的语义@autoreleasepool { }不同;它实际上并没有以经典的 MRC 方式分配和释放 NSAutoreleasePool 对象,它只是告诉 ARC 也处理调用它的线程中的对象,从而实现自动释放池样式的效果。

于 2012-10-30T06:40:35.717 回答
0

当您从手动内存管理迁移到 ARC 时,您将替换:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[pool release];

@autoreleasepool {

    }

阅读NSAutoreleasePool文档和Advanced Memory Management Programming Guide以获得更好的理解。

于 2012-10-30T06:39:43.363 回答