Могу ли я зарегистрировать класс для NSNotifications? Могу ли я использовать методы класса с NSNotifications?

Я работаю над классом для своего приложения для iPhone, и мне бы хотелось, чтобы он регистрировался и знал об изменениях состояния приложения ( UIApplicationDidEnterBackgroundNotification , и т.д). Есть ли способ зарегистрировать класс для уведомлений, не сохраняя созданный объект в памяти? Я просто хочу, чтобы соответствующие уведомления вызывали класс для инициализации, выполняли некоторые действия, а затем снова оставляли память.

Прямо сейчас у меня есть следующее в методе инициализации:

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnteredBackground) 
                                             name: UIApplicationDidEnterBackgroundNotification
                                           object: nil];

и этот метод в другом месте в .m файле класса:

- (void) handleEnteredBackground {
    NSLog(@"Entered Background"); }

Я создаю экземпляр класса один раз в applicationDidLoad , но поскольку я ничего с этим не делайте. Я предполагаю, что ARC убивает объект из памяти, и приложение вылетает (без каких-либо полезных кодов ошибок, заметьте), когда я закрываю его. Если я переключаю handleEnteredBackground на метод класса со знаком «+», я получаю недопустимые ошибки селектора при закрытии приложения.

Конечная цель - создать экземпляр класса один раз в жизненном цикле приложения и дать ему возможность реагировать на изменения состояния приложения без какого-либо дополнительного кода вне класса. Предположим, что iOS 5 + Xcode 4.2+

7
задан Keavon 18 May 2014 в 16:59
поделиться