2011-01-27 6 views
11

Per quanto riguarda "Assicurare KVO Compliance", ci sono alcuni definizione ufficiale che sembra difficile da capireCapire KVO in iOS

Al fine di essere considerato KVO-compatibile per una specifica proprietà, una classe deve assicurare quanto segue;

  1. La classe deve essere valore-chiave di codifica compliant per la proprietà come specificato nel garantire KVC Compliance.

  2. La classe deve permettere automatiche notifiche osservatori per la proprietà , o implementare manuale valore-chiave osservazione per la proprietà.

Chi può dare esempi più specifici per rendere questo più chiaro? Grazie

risposta

8

Dai un'occhiata a Ensuring KVO Compliance nella sezione Supporto automatico contro supporto manuale della Guida alla programmazione di osservazioni valore-chiave. La conformità viene essenzialmente raggiunta seguendo le convenzioni di denominazione per metodi e/o ivars.

Nella mia esperienza KVO tende a "funzionare", il che è bello.

+7

Link rot: "Garantire la conformità KVO" è stato spostato su http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOCompliance.html#//apple_ref/doc/uid/ 20002178-BAJEAIEE – erikprice

1

Quando si utilizzano i tag @property su create getters/ setters, la magia viene cablata automaticamente per le relazioni To-One e occorre solo aggiungereObserver ... e implementare il metodo observ ... per catturare gli aggiornamenti.

La vera sfida è capire come si implementa la conformità a molti valori chiave per rendere funzionante un set o un array mutabile. Il documentation here è la chiave e la comprensione che ci sono due sezioni ... Collezioni indicizzate e raccolte non ordinate. Mi ha davvero aiutato a capire che se @property è un NSMutableArray devi guardare i metodi nell'area indicizzata e se @property è un NSMutableSet devi consultare la documentazione Unordered.

Esistono metodi necessari che è necessario implementare anche se non si prevede di utilizzarli.