Подтвердить что ты не робот

Нужен ли мне метод dealloc с ARC?

Итак, у меня есть класс:

@interface Controller : NSObject
{
    UILabel* fileDescription;
}

@property(strong, nonatomic) UILabel* fileDescription;

Нужно ли мне использовать метод dealloc, где свойство fileDescription будет равно nil?
Например:

-(void)dealloc
{
    fileDescription = nil;
}

Если нет, кто будет отбрасывать память, используемую fileDescription?

4b9b3361

Ответ 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, как правило, мы можем определить их как уровень функции, уровень класса и т.д. И т.д. Надеюсь, что это поможет.