2010-07-02 4 views
0

Quelle est la différence entre le comportement de CALFore valueForKey et celui de tout NSObject ordinaire?
J'ai un calque personnalisé qui hérite de CALayer, et qui a une propriété nommée 'angle', mais [myLayer valueForKey: @ "angle"] renvoie toujours nil tandis que [myLayer angle] renvoie la bonne valeur.

valueForKey: fonctionne comme prévu avec une classe héritée de NSObject, mais pas un de CALayer, donc je suppose que c'est [CALayer valueForKey:] qui est fait quelques trucs étranges ..

Merci!Calayer valueForKey:

Répondre

2

Toute l'animation de base est en fait soutenue par du code C++, l'interface est juste un wrapper Objective-C. Par conséquent, des fonctions telles que -valueForKey: ont été réimplémentées pour passer d'abord par le cœur C++. C'est la différence de NSObject. Si votre -angle est juste une méthode, pas une propriété déclarée, le -valueForKey: personnalisé ne le trouvera pas. C'est probablement un bug. Essayez de vous assurer de déclarer une propriété .angle.

@property(assign) float angle; 
+0

Excellent! Merci pour la réponse rapide et perspicace! Juste par curiosité, où obtenez-vous des informations comme ça? Parce que je trouve souvent que les documents Cocoa ne suffisent pas. Travaillez-vous pour Apple? ;) – Kay

+0

Je voulais voter en haut, mais je n'ai pas assez de réputation .. – Kay

+0

J'ai posté une autre question par rapport à celui-ci. Pouvez-vous jeter un coup d'oeil si vous avez le temps? Je vous remercie! http://stackoverflow.com/questions/3170723/animation-a-custom-calayer-property – Kay