我想知道NSAutoreleasePool和@autoreleasepool块之间的区别是什么。我经历了很多问题,但没有得到满意的答案。直到现在我才知道在ARC中我们不能使用NSAutoreleasePool和@autoreleasepool两种ARC enabled and disabled情况下都可以使用block,因此在内部方面它们在这种方式上有所不同。

即使我们正在使用 NSAutoreleasePool 或@autoreleasepool块,是否也需要在禁止电弧的环境中释放对象,否则它们会自动执行?此外,如果ARC自动释放内存,那么为什么我们使用 @autoautopool 块。请给出我通过示例进行简要概述。

最佳答案

您提到的一个区别:



但是对于您来说,这句话是:



ARC不会自动释放内存!这是一个编译时功能,其中向每个对象发送一个autorelease并将其转到本地池。一旦生命周期和作用域结束,池OS就会释放自身,从而释放所有对象。

您可以引用此博客Are @autoreleasepool Blocks More Efficient?



,您需要释放对象。根据(@/NS)autoreleasepool的定义,它不处理您的对象保留计数,但仅用于以下用途:

关于ios - NSAutoreleasePool和@autoreleasepool块有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23513792/

10-11 14:20