Vidéo: SCRIPTCASE DEMO - 5/5: Security Module and Deployment 2025
Lorsque les propriétés ont été développées pour la programmation d'applications iOS, elles ont été considérées évitez l'ennui des accesseurs d'écriture pour les propriétés basées sur des variables par exemple. Les gens considéraient les propriétés comme un moyen d'accéder aux variables d'instance.
En fait, les variables d'instance ne doivent pas être assimilées à des propriétés, et plus important, les variables d'instance ne doivent pas être rendues publiques. (Cela viole le principe d'encapsulation orienté objet, mais c'est une conversation à un autre moment.) En fait, la nouvelle approche d'Apple consiste à placer des déclarations de variable d'instance dans le fichier d'implémentation de la classe.
Xcode 4. 2, les programmeurs ont déclaré des variables d'instance dans le fichier d'en-tête de la déclaration de classe @interface. Dans le passé, vous auriez ajouté le code en gras suivant à TestDriveController. h fichier:
@interface TestDriveController: UIViewController { AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar; }
Cette approche rendait visibles à tout le monde et à tout le monde les variables d'instance (ivars) et était en contradiction avec le principe de l'encapsulation (même si les variables n'étaient pas accessibles).
A partir de Xcode 4. 2, vous pouvez désormais masquer les variables d'instance en les déclarant dans le fichier d'implémentation de deux manières. La première est une extension de classe , que vous créez en ajoutant une seconde section d'interface dans le fichier d'implémentation suivie par des parenthèses ouvrantes et fermantes:
@interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;} -d
La deuxième façon consiste à déclarer la variable d'instance dans le bloc @implementation de la classe:
@implementation TestDriveController AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;
Une extension de classe est une variation d'une catégorie Objective-C.
L'approche que vous utilisez est votre choix. L'utilisation de l'extension de classe facilite la distinction des variables.
Vous pouvez également utiliser des extensions de classe pour disposer d'un ensemble de méthodes déclaré publiquement, puis déclarer des méthodes supplémentaires à utiliser uniquement par la classe:
@interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;} - (void) privateMethod; -d
Ces méthodes ne sont pas vraiment privées, mais ne sont pas visibles dans le fichier d'en-tête. Ce sont des "API privées"."
