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