Im новый для obj-c и проблема с пониманием функция автореферат. Может кто-нибудь объяснить мне, когда я должен использовать его? и как это отличается от выпуска. также мне нужно сбросить пул авторесурсов? как? и когда?объектив-c автообновление
ответ
Вызов autorelease
расписание a release
сообщение, которое будет отправлено объекту в ближайшем будущем, добавив объект в самое верхнее NSAutoreleasePool
. Когда пул получает сообщение drain
, он отправляет release
всем объектам, которые были добавлены к нему.
10 используется в ситуациях, когда метод или функция должны отказаться от владения объектом, но он должен быть временно отключен от dealloc
, чтобы его вызывающий абонент мог что-то с этим сделать. Это также полезно при создании методов «удобства», которые обертывают alloc
, initWith...
и autorelease
, чтобы сделать код, который проще распределяет объекты.
поэтому мне нужно слить NSAutoreleasePool вручную? это не сбор мусора? когда я должен назвать метод дренажа? – Yazzmi
Вам не нужно сливать основной NSAutoreleasePool, он будет собирать мусор. Однако, если вы создаете свой собственный NSAutoreleasePool, вам нужно его самостоятельно выпустить. Если у вас есть код, который выделяет много автореализованных объектов (много памяти), вы можете слить пул, чтобы освободить эту память мгновенно, когда она больше не нужна. Если это так, вы должны создать новый NSAutoreleasePool для этого сценария и слить это, а не сливать пул основных/приложений. – Merrimack
Неверно, что это будет сбор мусора - у iPhone совсем нет коллекции мусора. Однако система создает пул перед отправкой события из основной runloop и сбрасывает его после завершения обработки события. – rpetrich
Когда вы отправляете -autorelease
объекту, он добавляется в список (пул авторесурсов), а когда пул освобождается или сливается, каждый объект в списке получает сообщение -release
.
Autorelease - это не что иное, как механизм сообщений с задержкой.
- 1. Автообновление буфера ошибок ENSIME
- 2. формат даты оракула (автообновление)
- 3. Пользовательский автообновление веб-страницы
- 4. данные OnMouseOver держать автообновление
- 5. JTable автообновление help
- 6. Автообновление базовой сетки
- 7. автообновление стратегия применения
- 8. NodeJS автообновление сервера
- 9. Как реализовать автообновление?
- 10. Автообновление отчета iccube
- 11. петлевой automigrate против автообновление
- 12. Grunt автообновление от узла
- 13. Автообновление ячейки Jqgrid
- 14. Автообновление привязки данных
- 15. Clojure - автообновление Listbox
- 16. jQuery Перетаскиваемый переполнение: автообновление
- 17. clickonce автообновление выпуск
- 18. Автообновление в AngularJS
- 19. Автообновление приложения BlackBerry
- 20. Android: автообновление Google Maps
- 21. Автообновление Ajax и загрузка сервера
- 22. DataGridView WinForms Автообновление/обновление/обновление
- 23. автообновление установки клиента JavaFX/ScalaFX
- 24. Joomla Кто в сети автообновление
- 25. Android: «Автообновление» через определенное время
- 26. d3js многострочный график не автообновление
- 27. Автообновление группы по умолчанию Prestashop
- 28. Автообновление частичного просмотра, Google Charts
- 29. Автообновление браузера при изменении HTML
- 30. Автообновление в базе данных Mysql
Возможный дубликат [Общие сведения о подсчете ссылок с помощью Cocoa/Objective C] (http://stackoverflow.com/questions/6578/understanding-reference-counting-with-cocoa-objective-c) –