【问题标题】:if i am using GCD should i need to create @autorelease pool如果我使用 GCD,我是否需要创建 @autorelease 池
【发布时间】:2016-08-19 20:56:38
【问题描述】:
我已经阅读了很多关于何时使用@autorelease 池的stackoverflow 讨论,有人建议在您的应用程序中创建辅助线程时编写自己的@autorelease 池,并且一些关于此的讨论描述您不需要创建@autorelease水池,
当我使用 GCD 时,我是否还需要在外部创建 @autorealease 池
所以请在这里的任何人,纠正我关于@autorelease 的情况。
【问题讨论】:
标签:
objective-c
memory-management
grand-central-dispatch
nsautoreleasepool
【解决方案1】:
如果您的代码块创建了多个 Objective-C 对象,您可能希望将代码块的部分代码包含在 @autorelease 代码块中,以处理这些对象的内存管理。
虽然 GCD 调度队列有自己的自动释放池,但它们不能保证这些池何时耗尽。如果您的应用程序受到内存限制,创建您自己的自动释放池可以让您更定期地为自动释放的对象释放内存。
因此,如果您只分配几个对象,请不要担心。但是,如果您要分配大量对象(并且由于您的目标是内存受限的环境),那么您应该创建并排水池。