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?
objective-c
cocoa
notifications
mattdwen
quelle
quelle
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 .
quelle
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 ];
quelle
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];
quelle