Я работаю над классом для своего приложения для 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 +