-dealloc должен сделать, что-нибудь кроме освобождает память?

Я наследовал приложение для iPhone на работе, и я плохо знаком с Objective C, таким образом, у меня просто еще нет своих подшипников. Я встретился с кодом, подобным этому:

- (void) dealloc {
    [[StaticObject sharedObject] showSomeDialog];

    [super dealloc];
}

Я знаю, что это осуждено на других языках. Мой смысл паука сходит с ума, смотря на тот код.

Действительно ли это - общая идиома Objective C? Или у меня есть дрянная кодовая база для фиксации?

8
задан ageektrapped 23 July 2010 в 13:42
поделиться

2 ответа

Не следует помещать код пользовательского интерфейса в -dealloc.Общее практическое правило: используйте -dealloc только для очистки того, что вы сделали: освободить объекты, удалить наблюдателей и т. Д.

Подумайте, что бы произошло, если бы этот объект жил в потоке, отличном от основного потока ... теперь вы код пользовательского интерфейса работал бы в неосновном потоке, что плохо .

7
ответ дан 5 December 2019 в 21:15
поделиться

Вы можете сделать это по некоторым причинам отладки. Но я не думаю, что вам стоит когда-либо делать что-то подобное! Это означает, что при освобождении объекта появляется диалоговое окно. Поэтому, если вам нужен какой-либо механизм для отображения диалога в определенное время, не делайте его зависимым от освобождаемого объекта. В методе dealloc вы действительно должны просто освободить все объекты, удерживаемые освобожденным объектом. И не занимаясь какими-то навороченными функциями приложения.

0
ответ дан 5 December 2019 в 21:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: