如果我正在使用GCD,我应该创建@autorelease池

问题描述 投票:1回答:1

我已经阅读了很多关于何时使用@autorelease池的stackoverflow讨论,当你在应用程序中创建一个辅助线程时,有人建议编写自己的@autorelease池,并且有一些关于这个的讨论描述你不需要创建@autorelease池,当我使用GCD时,我是否需要创建外部@autorealease池?

所以请在这里任何一个人,纠正我关于@autorelease的情况。

objective-c memory-management grand-central-dispatch nsautoreleasepool
1个回答
0
投票

如果您的块创建了多个Objective-C对象,您可能希望将块的代码部分包含在@autorelease块中,以处理这些对象的内存管理。

尽管GCD调度队列具有自己的自动释放池,但它们无法保证这些池何时耗尽。如果您的应用程序受内存限制,则创建自己的自动释放池允许您以更加规则的间隔释放自动释放对象的内存。

因此,如果您只分配一些对象,请不要担心。但是,如果要分配任意数量的对象(并且因为您的目标是内存受限环境),那么您应该创建和排空池。

© www.soinside.com 2019 - 2024. All rights reserved.