10 votes

Comment rendre les propriétés privées?

Quelqu'un m'a dit que je pouvais rendre les propriétés privées afin qu'elles ne puissent être référencées que par une instance de la classe (via self.)

Cependant, si j'utilise @private dans l'interface de la classe et que je déclare ensuite normalement la propriété, elle peut toujours être accessible de l'extérieur de la classe... Comment puis-je rendre les propriétés privées ? Exemple de syntaxe s'il vous plaît.

21voto

dtuckernet Points 5372

Vous devez inclure ces propriétés dans une extension de classe. Cela vous permet de définir des propriétés (et plus récemment des iVar) dans votre fichier d'implémentation dans une déclaration d'interface. C'est similaire à la définition d'une catégorie mais sans nom entre les parenthèses.

Donc si ceci est votre fichier MyClass.m :

// Définition de l'extension de classe dans le fichier d'implémentation
@interface MyClass()

@property (nonatomic, retain) NSString *myString; 

@end

@implementation MyClass

- (id)init
{
    self = [super init];
    if( self )
    {
        // Cette propriété ne peut être accédée que dans la classe
        self.myString = @"Bonjour!";
    }
}

@end

5voto

kubi Points 20607

Déclarez la propriété dans le fichier d'implémentation (.m), comme ceci :

@interface MyClass()

@property (nonatomic, retain) MyPrivateClass *secretProperty;

@end

Vous pourrez utiliser cette propriété au sein de votre classe sans avertissement du compilateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X