Pracuję nad klasą dla mojej aplikacji na iPhone'a i chcę ją zarejestrować i mieć świadomość zmian stanu aplikacji (UIApplicationDidEnterBackgroundNotification
itd.). Czy istnieje sposób rejestrowania klasy powiadomień bez konieczności przechowywania instancji w pamięci? Po prostu chcę, aby odpowiednie powiadomienia wywoływały klasy, aby zainicjować, zrobić kilka rzeczy, a następnie ponownie opuścić pamięć.Czy mogę zarejestrować klasę NSNotification? Czy mogę używać metod klas z NSNotifications?
Teraz mam następujący w metodzie Init:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnteredBackground)
name: UIApplicationDidEnterBackgroundNotification
object: nil];
i ta metoda gdzie indziej w pliku .m klasy:
- (void) handleEnteredBackground {
NSLog(@"Entered Background"); }
I instancji klasy raz pod applicationDidLoad
, ale ponieważ nie robię z tym nic, zakładam, że ARC zabija obiekt z pamięci, a aplikacja zawiesza się (bez użytecznych kodów błędów, pamiętajcie), kiedy idę go zamknąć. Jeśli zmienię handleEnteredBackground
na metodę klasy ze znakiem "+", po zamknięciu aplikacji pojawią się nieprawidłowe błędy selektora.
Ostatecznym celem jest utworzenie klasy jeden raz w całym cyklu życia aplikacji i umożliwienie reagowania na zmiany stanu aplikacji bez dodatkowego kodu poza zajęciami. Załóżmy, że iOS 5 + Xcode 4.2+
To brzmi jak świetne rozwiązanie ... Postaram się o odpowiedź i przyjmuję odpowiedź, gdy tylko będę miał okazję jej wypróbować na zewnątrz! – Amos
Bez problemu. Napisz tutaj, jeśli masz więcej pytań. – hwaxxer