我想知道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/