NSNotificationCenter vs. Protocol

1

Sto usando MPMoviePlayerController in un progetto. Il loadState dell'oggetto MPMoviePlayerController è osservato usando NSNotificationCenter .

Perché Apple ha scelto NSNotificationCenter in questa situazione invece di utilizzare la delega?

    
posta Ben Boral 06.08.2012 - 09:52
fonte

1 risposta

4

Potresti avere più di una classe che è interessata al loadState di MPMoviePlayerController. Un esempio plausibile di ciò è il fatto che Apple potrebbe utilizzare la notifica relativa a loadState per fare alcune delle proprie cose sotto il cofano. Ora vieni e esprimi interesse anche per la stessa notifica. Usando NSNotificationCenter, entrambi puoi dire "Ehi, voglio essere avvisato quando il loadState di questo player cambia".

Nel caso di un protocollo (delega), è generalmente una relazione uno-a-uno. Un oggetto, nel tuo esempio il giocatore, poteva avere solo un delegato. Quindi se Apple avesse bisogno di conoscere il loadState e avessi bisogno di conoscere anche il loadState, uno di voi sarebbe sfortunato!

NSNotificationCenter ha una relazione "vagamente accoppiata" con l'oggetto che pubblica una notifica e gli oggetti che osservano tale notifica. In delegazione, tuttavia, la relazione tende ad essere significativamente più stretta.

    
risposta data 06.08.2012 - 22:29
fonte

Leggi altre domande sui tag