2009-08-25 20 views

risposta

3

Se la classe observer è registrata per una notifica per nome, ma non contro un oggetto specifico, riceverà più messaggi, in quanto verrà richiamata ogni volta che si verifica la notifica, indipendentemente dall'oggetto di origine.

Allo stesso modo, se l'osservatore è registrato su un oggetto specifico, ma non contro una notifica con nome, verrà messaggiato ogni volta che c'è una notifica riguardante quell'oggetto.

Un meccanismo alternativo per essere informati delle variazioni di uno Stato lontano, è la chiave Valore osservazione - http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

8

Se il selettore viene chiamato due volte, probabilmente lo si è registrato due volte.

+0

Il problema è, ci sono due controlli nel pennino, che è personalizzato per la stessa classe. e Poiché l'osservatore è stato registrato in awakeFromNib() di quella classe, il selettore viene anche chiamato due volte per una singola postNotifica. :( –

1

Quello che ha funzionato per me è stato un paio di cose:

1-Nella classe dove la registrazione addObserver la chiamata è fatta, doveva aggiungere un oggetto specifico.

2-Nella classe in cui viene effettuata la chiamata postNotification, come lo stesso tipo di oggetto.

Anche io faccio la mia postNotificaiton in una chiamata dispatchAsync, ma non è correlato al tuo problema.

0

Verificare se l'addObserver è impostato una sola volta. Nel mio caso, il ciclo addObserver ha funzionato due volte, quindi il bug.

Problemi correlati