65 votes

Propriété Objective-C qui est en lecture seule, mais qui possède un paramètre de définition privé

Je voudrais utiliser l' @property de la syntaxe pour déclarer une synthétisé bien public readonly mais a un setter qui peut être appelé en privé à partir de l'intérieur de la classe.

Depuis qu'il l'Objective-C, cela signifie que l' setFoo: méthode de synthèse, mais de l'appeler à l'extérieur de la classe elle-même serait un avertissement (non reconnu sélecteur). Pour le déclenchement de l'avertissement que j'ai à déclarer la propriété readonly; est-il un moyen de forcer un synthétisé setter qui est uniquement disponible au sein de la classe?

110voto

Sean Rich Points 965

Je pense que vous êtes à la recherche pour sont appelés les extensions de la classe. Vous pouvez déclarer la propriété en lecture seule dans l'en-tête:

@interface MyClass : NSObject {
}

@property (readonly, assign) NSInteger myInteger;

@end

Puis redeclare dans votre extension de classe dans le fichier d'implémentation:

@interface MyClass ()

@property (readwrite, assign) NSInteger myInteger;

@end


@implementation MyClass

@synthesize myInteger;

@end

Pour plus d'découvrez d'Apple documentation

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