Я наследовал приложение для iPhone на работе, и я плохо знаком с Objective C, таким образом, у меня просто еще нет своих подшипников. Я встретился с кодом, подобным этому:
- (void) dealloc {
[[StaticObject sharedObject] showSomeDialog];
[super dealloc];
}
Я знаю, что это осуждено на других языках. Мой смысл паука сходит с ума, смотря на тот код.
Действительно ли это - общая идиома Objective C? Или у меня есть дрянная кодовая база для фиксации?
Не следует помещать код пользовательского интерфейса в -dealloc.Общее практическое правило: используйте -dealloc только для очистки того, что вы сделали: освободить объекты, удалить наблюдателей и т. Д.
Подумайте, что бы произошло, если бы этот объект жил в потоке, отличном от основного потока ... теперь вы код пользовательского интерфейса работал бы в неосновном потоке, что плохо .
Вы можете сделать это по некоторым причинам отладки. Но я не думаю, что вам стоит когда-либо делать что-то подобное! Это означает, что при освобождении объекта появляется диалоговое окно. Поэтому, если вам нужен какой-либо механизм для отображения диалога в определенное время, не делайте его зависимым от освобождаемого объекта. В методе dealloc вы действительно должны просто освободить все объекты, удерживаемые освобожденным объектом. И не занимаясь какими-то навороченными функциями приложения.