2

Я читал так много блогов для пула @autorelease, но я до сих пор не понимаю эту концепцию пула @autorelease в объектной разработке c или ios.Почему и когда нам нужно использовать @autoreleasepool в проектах ios

Так может кто-нибудь, пожалуйста, прожечь эту концепцию. Было бы очень полезно, если бы кто-нибудь мог предоставить мне пример этого и когда требуется использование пула @autorelease.

Как измерить распределение памяти с использованием пула @autorelease и без него.

Пожалуйста, пролишите свет на эту тему, возможно, это дубликат.

+0

[Здесь] (http://stackoverflow.com/questions/9086913/objective-c-why-is-autorelease-autoreleasepool-still-needed-with-arc) говорится, почему «Autoreleasepool» необходим в ARC – byJeevan

+0

i считайте его полезным только тогда, когда есть объекты, отмеченные __autoreleasing [(см. это)] (http://stackoverflow.com/questions/8862023/in-which-situations-do-need-to-write-the- autoreleasing владение-классификатор). поэтому те виды объектов будут выпущены только в том случае, если он попадает в конец основного пула автозапуска приложений, но если многие из них создаются за короткий промежуток времени, у вас может закончиться нехватка памяти, чтобы вы могли стратегически разместить свой собственный автозапуск это так, что объекты автореализации не накапливаются и не вызывают ошибку из памяти – Fonix

+0

, как я могу измерить использование памяти в практическом примере, когда я использую пул @autorelease, и когда я не использую его – user1374

ответ

-1

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

Различные способы владения объектом: alloc, new, сохранять и копировать. Каждый раз, когда вы используете это, попробуйте отпустить его, чтобы Objective C позаботился об этом объекте. Если вы не уверены в выпуске этого объекта, убедитесь, что вы выполняете авторекламу.

Всякий раз, когда вы выполняете автообновление объекта, объект не будет выпущен правильно, он будет добавлен в Autoreleasepool в основной функции. Autoreleasepool в основной функции будет поддерживать стек объектов, которые будут выпущены, и они будут выпущены один за другим, когда вызывается метод «стока», например: [pool drain]. Метод слива многократно вызывается в конце каждого цикла событий.

+2

хорошая копия папок https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html – Fonix

+0

И ответы должны отвечать на вопрос, а не на связь. – gnasher729

Смежные вопросы