NSNotification Fragen...

31/10/2007 - 23:54 von aclauss | Report spam
Wie sieht das eigentlich mit den Notifications aus? Ich dachte, wenn ich
in mehr als einem Objekt auf bestimmte Notifications höre, müssten auch
alle diese Objekt diese Notifications zugestellt bekommen.

Aber irgendwie funktioniert das nur eingeschrànkt.


Z.B. definiere ich für ein Objekt folgendes:

[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(ATextFieldDidChange:)
name: NSControlTextDidChangeNotification
object: nil];

D.h. das Objekt hört auf Änderungen aller Objekte, die diese
"NSControlTextDidChangeNotification"-Notification verschicken (also z.B.
Textfelder verschicken diese wàhrend der Eingabe).

Aber anscheinend tun das Textfelder nur dann, wenn diese Textfelder
nicht die folgende Methode (also z.B. in einer abgeleiteten Klasse)
definieren:

- (void)textDidChange:(NSNotification*)notification

Diese Methode wird auch ohne Anmeldung beim NotificationCenter
aufgerufen, allerdings werden an keine(!) anderen Objekte, die allgemein
auf die NSControlTextDidChangeNotification-Nachricht hören (also
"object" bei der Anmeldung beim NotificationCenter auf nil setzen, wie
oben angegeben) diese Notifications verschickt. Das passiert nur, wenn
Das textfeld selbst "textDidChange:" nicht definiert, d.h. die Methode
anders heißt, und damit explizit über das NotificationCenter angemeldet
werden muß.

Wie kann ich dennoch über Änderungen dieser Textfelder informiert
werden?

Alexander
 

Lesen sie die antworten

#1 Florian Zschocke
01/11/2007 - 11:33 | Warnen spam
(Alexander Clauss) schrieb:

Wie sieht das eigentlich mit den Notifications aus? Ich dachte, wenn ich
in mehr als einem Objekt auf bestimmte Notifications höre, müssten auch
alle diese Objekt diese Notifications zugestellt bekommen.

Aber irgendwie funktioniert das nur eingeschrànkt.


Z.B. definiere ich für ein Objekt folgendes:

[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(ATextFieldDidChange:)
name: NSControlTextDidChangeNotification
object: nil];

D.h. das Objekt hört auf Änderungen aller Objekte, die diese
"NSControlTextDidChangeNotification"-Notification verschicken (also z.B.
Textfelder verschicken diese wàhrend der Eingabe).

Aber anscheinend tun das Textfelder nur dann, wenn diese Textfelder
nicht die folgende Methode (also z.B. in einer abgeleiteten Klasse)
definieren:

- (void)textDidChange:(NSNotification*)notification

Diese Methode wird auch ohne Anmeldung beim NotificationCenter
aufgerufen, allerdings werden an keine(!) anderen Objekte, die allgemein
auf die NSControlTextDidChangeNotification-Nachricht hören (also
"object" bei der Anmeldung beim NotificationCenter auf nil setzen, wie
oben angegeben) diese Notifications verschickt. Das passiert nur, wenn
Das textfeld selbst "textDidChange:" nicht definiert, d.h. die Methode
anders heißt, und damit explizit über das NotificationCenter angemeldet
werden muß.

Wie kann ich dennoch über Änderungen dieser Textfelder informiert
werden?




Ich bin nicht ganz schlau daraus geworden wo Dein Problem liegt.
Du kannst natürlich immer eine eigene Notification definieren und die dann
posten. Du kannst aber auch NSControlTextDidChangeNotification selber
posten.

Gruß Florian

Ähnliche fragen