Если я использую GCD, мне нужно создать пул @autorelease

Я прочитал так много обсуждений в stackru о том, когда использовать пул @autorelease, кто-то предлагает написать собственный пул @autorelease при создании вторичного потока в вашем приложении, и некоторые обсуждения этого описания, что вам не нужно создавать пул @autorelease, также если мне нужно создать внешний @autorealease пул, когда я использую GCD

Так что, пожалуйста, поправьте меня насчет @autorelease для какого сценария.

1 ответ

Решение

Если ваш блок создает более нескольких объектов Objective-C, вы можете захотеть заключить части кода вашего блока в блок @autorelease для управления памятью этих объектов.

Хотя очереди отправки GCD имеют свои собственные пулы автоматического выпуска, они не дают никаких гарантий относительно того, когда эти пулы очищаются. Если ваше приложение ограничено в памяти, создание собственного пула автоматического выпуска позволяет освобождать память для автоматически выпущенных объектов с более регулярными интервалами.

Поэтому, если вы выделяете только несколько объектов, не беспокойтесь об этом. Однако, если вы выделяете какое-то значительное количество объектов (и поскольку вы нацелены на среду с ограниченным объемом памяти), то вам следует создавать и удалять пулы.

Другие вопросы по тегам