Je suis devenu un grand fan de KVO/KVC. J'aime la façon dont mon architecture MVC reste propre. Cependant, je ne suis pas amoureuse de l'énorme performance que j'éprouve lorsque j'utilise KVO dans la boucle de rendu interne de l'application de rendu 3D que je conçois, où les messages se déclenchent 60 fois par seconde pour chaque objet observé - potentiellement des centaines.Cocoa Touch Programmation. KVO/KVC dans la boucle interne est super lent. Comment puis-je accélérer les choses?
Quels sont les trucs et astuces pour accélérer KVO? Spécifiquement, j'observe une valeur scalaire - pas un objet - alors peut-être que l'emballage/déballage me tue. Je suis également en train de mettre en place et d'arrêter l'observation
[foo addObserver:bar forKeyPath:@"fooKey" options:0 context:NULL];
[foo removeObserver:bar forKeyPath:@"fooKey"];
dans la boucle interne. Peut-être que je prends un coup pour ça. Je veux vraiment, vraiment, garder l'énorme flexibilité que KVO me procure. Y a-t-il de la vitesse qui peut donner un coup de main?
Cheers, Doug
Comment savez-vous que le coup de performance est causé par KVO/KVC, avez-vous profilé? Je suis désolé si la réponse est un YES flagrant, mais parfois les gens prennent des hypothèses sur les goulets d'étranglement de la performance ... – zoul
Je profil religieusement. Mon cœur s'est effondré lorsque la performance s'est évanouie en rampant avec KVO. Ungh. – dugla