2014-10-17 7 views
4

Я добавил этот код в моем AppDelegate.h файле:Должен ли я удалить наблюдателя в applicationWillTerminate?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(saveDataAndSettings) 
               name:UIApplicationDidEnterBackgroundNotification 
               object:nil]; 
} 

Я обычно пишу это:

- (void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 

если установить классы UIViewController, чтобы быть наблюдателем (не ARC).

мне интересно, хотя, если я делаю это в AppDelegate, я должен еще вставить эту строку:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

в applicationWillTerminate: метод.

Поскольку приложение будет прекращено, имеет ли смысл сделать это?

Заранее спасибо

ответ

2

С практической точки зрения нет необходимости делать много очисток в любом dealloc или applicationWillTerminate: приложения делегата. Процесс приложения скоро исчезнет.

Такие вещи, как закрытие/сохранение файлов и другие подобные виды очистки, должны быть выполнены, но при очистке памяти или наблюдателей есть немного смысла в процессе, который вот-вот прекратится.

+0

спасибо за ответ – ppalancica

+0

не беспокойтесь, я обычно не отправляю много вопросы, но когда я это делаю, я принимаю отличные ответы, а ваш действительно здорово! – ppalancica

0

Если вы используете нон ARC подход в YOURE проекте вы должны лучше вручную DEALLOCATE ссылка на уведомление, как вы упомянуть:

- (void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 
Смежные вопросы