/ / Obj-C: osserva costantemente le modifiche a una proprietà (valore doppio) per attivare if - obiettivo-c, cacao

Obj-C: Osserva costantemente le modifiche a una proprietà (doppio valore) per attivare if's - objective-c, cacao

Voglio usare la proprietà currentPlaybackTime,che restituisce un valore double per attivare una serie di istruzioni if ​​in determinati punti della riproduzione del film per metterlo in pausa. A causa del comportamento approssimativo dei double, non si sincronizza mai con il valore nella mia istruzione if e il film non lo fa " t smettere. Tuttavia, non posso utilizzare un intervallo perché quando riprendo a giocare, potrebbe essere ancora all'interno dell'intervallo e quindi mettere immediatamente in pausa.

Quindi penso che quello che devo fare è arrotondare questo doppio valore a 2 cifre decimali.

Ma come osservo ogni modifica al fileproprietà currentPlaybackTime? In questo momento ho un timer impostato per chiamare il metodo che controlla le mie istruzioni if ​​rispetto al tempo di riproduzione ogni 0,0333 secondi (circa 30 volte al secondo (il framerate dei miei film)). Tuttavia questo è inesatto e mi sento quasi certamente sbagliato.

risposte:

3 per risposta № 1

Momento perfetto per il check-out Osservazione di valori-chiave.


2 per risposta № 2

Solo un FYI per gli altri poiché questo è un vecchio thread:

Sfortunatamente currentPlaybackTime non sembra essere conforme a KVO, quindi il metodo di polling di Ippocrate con un timer è probabilmente la migliore alternativa


1 per risposta № 3

Non sono sicuro a quale proprietà si sta tentando di osservare appartenga, ma deve essere conforme a KVO affinché questo approccio funzioni. Questo non è un dato per ogni proprietà.

Internamente, il codice che ti fornisce currentPlaybackTime deve chiamare willChangeValueForKey: e didChangeValueForKey: (se utilizza KVC per modificare la proprietà, riceve queste chiamate gratuitamente). Vorrei controllare la documentazione (o il codice se è vostro) per assicurarmi che sia osservabile.