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池,但他們不保證這些池何時耗盡。如果您的應用程序受內存限制,則創建您自己的自動釋放池可以讓您以更常規的時間間隔爲自動釋放對象釋放內存。因此,如果您只分配了一些對象,請不要擔心。但是,如果您分配了大量對象(並且因爲您的目標是內存受限環境),那麼您應該創建並排出池。

相關問題