En Objective-C 2.0, je fais habituellement une propriété assign
pour les ivars qui sont des types primitifs comme float
. Puis il m'est apparu que je peux y accéder depuis l'extérieur de la classe avec la notation obj->variable
. J'imagine que c'est une mauvaise pratique: n'est-ce pas?L'accès IVars directement pour les non-objets d'une autre classe?
0
A
Répondre
2
Oui, c'est une mauvaise pratique car elle rompt l'encapsulation des détails d'implémentation de votre classe. La déclaration @property
est une instruction publique API ("ma classe fournit une propriété de type, par exemple float
), pas une instruction d'implémentation (" ma classe a une variable d'instance float
"). Les clients de l'API de votre classe ne doivent pas connaître son détails de l'implémentation, de peur que vous ne soyez empêché de modifier ces détails sans casser le code client:
Questions connexes
- 1. Utiliser un setter pour tous les modèles iVars
- 2. Comment les ivars privés déclarés sont-ils différents des ivars synthétisés?
- 3. iVars, avec et sans soi?
- 4. Pourquoi une sous-classe @property sans ivar correspondant ne classe-t-elle pas les ivars?
- 5. key-value-coding les ivars d'UIView
- 6. Comment pouvez-vous partager des ivars entre les classes?
- 7. Sélecteur pour une étiquette directement suivi par une autre balise
- 8. Modèle de conception pour les méthodes d'une autre classe
- 9. Question sur ivars et @ property's sur l'iPhone
- 10. Comment "fausser" les ivars dans une catégorie Obj-C (iPhone)
- 11. classe héritant d'une autre classe
- 12. Passant une autre classe parmi les instances
- 13. Sortir iVars de la méthode de description?
- 14. Utilisation de soi sur iVars dans dealloc?
- 15. rendre une classe convertible en une autre classe vb.net
- 16. Sérialiser la classe C# directement sur le serveur SQL?
- 17. classe d'accès PHP dans une autre classe
- 18. Technique de gestion de la mémoire pour les iVars/propriétés Objective-C
- 19. SerialPortEventListener d'une autre classe
- 20. MySQL Edition Copie d'une table dans un autre directement
- 21. Accès aux ivars d'une classe objective-c dans la fonction C++
- 22. Méthode de classe d'appel d'une autre classe
- 23. appeler des méthodes web directement à partir d'un autre projet
- 24. Existe-t-il un moyen de déterminer dynamiquement les ivars d'une classe à l'exécution dans Cocoa/Cocoa Touch?
- 25. ivars lors du mixage C et Objective-C
- 26. Comment les ivars automatiques @synthesized affectent-ils le * real * sizeof (MyClass)?
- 27. Une classe doit-elle implémenter une interface directement?
- 28. Classe parent dans une autre classe
- 29. Get classe et appliquer une autre classe
- 30. est-classe étant appelée d'une autre classe