1

我已经阅读了很多关于何时使用@autorelease池的stackoverflow讨论,有人建议在您的应用程序中创建一个辅助线程时使用@autorelease池,以及一些讨论这个描述你不需要创建@autorelease池, 也应我需要@autorealease池外创建时,我使用GCD如果我正在使用GCD,我应该创建@autorelease池

所以,请这里的任何一个,指正约@autorelease为其场景。

+0

[This](http://stackoverflow.com/a/12587187/3541063)可能会回答你的问题。 – werediver

+0

查看我的答案更新了iOS 10+ [这里](https://stackoverflow.com/a/47543034/285659) – ribeto

回答

0

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

虽然GCD调度队列有自己的autorelease池,但他们不保证这些池何时耗尽。如果您的应用程序受内存限制,则创建您自己的自动释放池可以让您以更常规的时间间隔为自动释放对象释放内存。因此,如果您只分配了一些对象,请不要担心。但是,如果您分配了大量对象(并且因为您的目标是内存受限环境),那么您应该创建并排出池。

相关问题