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

时间:2016-04-26 07:23:56

标签: objective-c memory-management grand-central-dispatch nsautoreleasepool

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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