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.