Нужен ли мне метод dealloc с ARC?
Итак, у меня есть класс:
@interface Controller : NSObject
{
UILabel* fileDescription;
}
@property(strong, nonatomic) UILabel* fileDescription;
Нужно ли мне использовать метод dealloc, где свойство fileDescription будет равно nil?
Например:
-(void)dealloc
{
fileDescription = nil;
}
Если нет, кто будет отбрасывать память, используемую fileDescription?
Ответы
Ответ 1
Обычно вам не нужно предоставлять подкласский метод dealloc
, поскольку ARC управляет временем жизни переменных экземпляра.
Однако может быть полезно выполнить очистку, отличную от освобождения объектов, например, чтобы удалить наблюдателя или закрыть сетевое соединение. Поэтому вам разрешен подкласс dealloc
в ARC, но вы не можете вызывать [super dealloc]
из метода подкласса.
В вашем конкретном случае это не требуется.
Ответ 2
Нет.
Вам не нужен метод dealloc
в ARC
.
Но если вы хотите выполнять некоторые задачи очистки, когда ваше представление отклоняется или освобождается. Это лучшее место, в этом случае вы можете реализовать его.
Например:
Вы запускаете таймер в своем представлении и обновляете свое представление. Когда вы отклоните представление, вам необходимо остановить этот таймер. В этом состоянии вы можете использовать метод dealloc и таймер остановки.
Аналогично для NSNotification
observer.
Ответ 3
Если вы используете ARC.
Не нужно использовать dealloc и release, компилятор знает, что ваше свойство и объекты сильно/слабы, поэтому он будет управлять им.
EDIT:
dealloc
требуется, если вы используете объекты coreframework, такие как CG...
и CF...
. Даже вы создаете наблюдателей для уведомлений, которые нужно удалить, а dealloc
- лучшее место для удаленияObserver.
Ответ 4
Ans NO, потому что с ARC не нужно dealloc.
Ответ 5
Поскольку вы используете ARC, вам не нужно использовать dealloc
Complier установит autoreleasePool в зависимости от объема свойства, переменной или элемента управления. И будет память release
. Существуют различные типы autoreleasepool, как правило, мы можем определить их как уровень функции, уровень класса и т.д. И т.д. Надеюсь, что это поможет.