Разработка iPhone – выпуск автоматически выпущенного объекта
-
06-07-2019 - |
Вопрос
Что произойдет, если я выпущу автоматически выпущенный объект?Я хочу выпустить автоматически выпущенный UIButton, и единственный способ создать UIButton — использовать удобный метод buttonWithType:.Будет ли он освобожден из памяти, как обычный объект?Или мне просто позволить autoreleasepool позаботиться об этом?Я бы вообще не выпускал его автоматически, если бы мог.
Спасибо!!
Решение
Вам следует просто позволить пулу автоматического выпуска позаботиться об этом.Как только вы добавите кнопку в родительское представление, это представление сохранит ее, а о дескрипторе автоматического выпуска позаботится пул автоматического выпуска.
Проще всего думать об этом с точки зрения владения: вы не «владеете» ссылкой, которую вы получили удобным способом, поэтому вам не нужно беспокоиться о ее освобождении, если вы не сохраните ее.
Другие советы
Вы должны освободить только тот объект, которым владеете.+кнопкастипом:не возвращает принадлежащий объект, поэтому вы не должны освобождать его.
Обзор Правила владения объектами Cocoa.
Почему вы пытаетесь избежать здесь автоматически выпускаемого объекта?Предположительно, вы создаете кнопку, потому что используете ее и вставляете ее в иерархию представлений, поэтому нет реальной причины ускорять опорожнение пула автоматического выпуска, содержащего кнопку.