Kann mir bitte jemand ein Beispiel für ein Cocoa Obj-C-Objekt mit einer benutzerdefinierten Benachrichtigung zeigen, wie es ausgelöst, abonniert und behandelt wird?
Kann mir bitte jemand ein Beispiel für ein Cocoa Obj-C-Objekt mit einer benutzerdefinierten Benachrichtigung zeigen, wie es ausgelöst, abonniert und behandelt wird?
Antworten:
@implementation MyObject
// Posts a MyNotification message whenever called
- (void)notify {
[[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self];
}
// Prints a message whenever a MyNotification is received
- (void)handleNotification:(NSNotification*)note {
NSLog(@"Got notified: %@", note);
}
@end
// somewhere else
MyObject *object = [[MyObject alloc] init];
// receive MyNotification events from any object
[[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil];
// create a notification
[object notify];
Weitere Informationen finden Sie in der Dokumentation zu NSNotificationCenter .
Schritt 1:
//register to listen for event
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(eventHandler:)
name:@"eventType"
object:nil ];
//event handler when event occurs
-(void)eventHandler: (NSNotification *) notification
{
NSLog(@"event triggered");
}
Schritt 2:
//trigger event
[[NSNotificationCenter defaultCenter]
postNotificationName:@"eventType"
object:nil ];
Stellen Sie sicher, dass Sie die Registrierung der Benachrichtigung (Beobachter) aufheben, wenn die Zuordnung Ihres Objekts aufgehoben wird. In der Apple-Dokumentation heißt es: "Bevor ein Objekt, das Benachrichtigungen beobachtet, freigegeben wird, muss es das Benachrichtigungscenter anweisen, das Senden von Benachrichtigungen zu beenden."
Für lokale Benachrichtigungen gilt der nächste Code:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Und für Beobachter verteilter Benachrichtigungen:
[[NSDistributedNotificationCenter defaultCenter] removeObserver:self];