@implementation TestClass
- (void) dealloc
{
// If you don't remove yourself as an observer, the Notification Center
// will continue to try and send notification objects to the deallocated
// object.
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (id) init
{
self = [super init];
if (!self) return nil;
// Add this instance of TestClass as an observer of the TestNotification.
// We tell the notification center to inform us of "TestNotification"
// notifications using the receiveTestNotification: selector. By
// specifying object:nil, we tell the notification center that we are not
// interested in who posted the notification. If you provided an actual
// object rather than nil, the notification center will only notify you
// when the notification was posted by that particular object.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveTestNotification:)
name:@"TestNotification"
object:nil];
return self;
}
- (void) receiveTestNotification:(NSNotification *) notification
{
// [notification name] should always be @"TestNotification"
// unless you use this method for observation of other notifications
// as well.
if ([[notification name] isEqualToString:@"TestNotification"])
NSLog (@"Successfully received the test notification!");
}
@end
... irgendwo anders in einer anderen Klasse ...
- (void) someMethod
{
// All instances of TestClass will be notified
[[NSNotificationCenter defaultCenter]
postNotificationName:@"TestNotification"
object:self];
}
0 Stimmen
Wirklich sehr nützlich, danke. Eine Sache, die addObserver-Methode sollte nicht den abschließenden Doppelpunkt nach dem angegebenen Selektor haben (zumindest verursachte es eine Ausnahme in meiner Version von diesem). Ich habe versucht, den Code oben zu bearbeiten, aber die Änderung wurde aufgrund von Formatierungsproblemen im ursprünglichen Code nicht akzeptiert.
3 Stimmen
Das war großartig: cocoawithlove.com/2008/06/
2 Stimmen
Diese Frage ist viel zu einfach und breit gefächert, ein bisschen googeln wäre gut gewesen
0 Stimmen
Dies ist einer ähnlichen Frage hier sehr ähnlich: stackoverflow.com/questions/7896646/
59 Stimmen
Ich finde es absurd, dass eine Frage wie diese geschlossen wird und nicht konstruktiv ist, wenn die Benutzer von Stack Overflow ihre Nützlichkeit so deutlich kommentiert haben
0 Stimmen
Versuchen Sie anstelle von NSNotificationCenter das ObserversCenter: github.com/yonglam/ObserversCenter
0 Stimmen
Wenn Sie Folgendes verwenden
NSNotificationCenter
Ich empfehle Ihnen die Nutzung der Bibliothek github.com/AllinMobile/AIMObserver was hilft, häufige Fehler zu vermeiden