Objectif-C: Faire des ivars @Public ou @Synthesizing @properties pour eux? Quand dois-je utiliser des propriétés?

StackOverflow https://stackoverflow.com/questions/8984921

  •  13-11-2019
  •  | 
  •  

Question

J'ai des variables d'instance dans ma classe que je voudrais être accessible n'importe où. Ainsi:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

Je peux accéder à la propriété à partir de l'instance en utilisant le -> Syntaxe comme ci-dessous, comme je le ferais en C ++:

someObjectInstance->someString

Devrais-je faire une propriété pour someString Quand tout ce que je veux, c'est qu'il soit accessible par le monde extérieur? Je créerais un @property pour someString dans mon interface et @synthesize dans mon implémentation, qui me permettrait d'y accéder à l'aide de la syntaxe DOT.

Était-ce utile?

La solution

D'une manière générale, si vous souhaitez exposer des données, vous devez utiliser des propriétés. Rendre les variables d'instance publiques est une mauvaise idée en général.

Autres conseils

C'est la façon plus orientée objet de le faire car lorsque vous utilisez une propriété, vous pouvez modifier le Getter / Setter plus tard (au lieu de l'avoir synthétisé) si vous vouliez qu'il fasse autre chose.

Oui, parce que ce que vous faites lorsque vous en faites un @property dirige des gens qui l'utilisent pour appeler le setSomeString et someString Méthodes, en fait. Même si tu es @synthesizeles ing, il est préférable que la qualité de votre code utilise les méthodes, car vous pourrait Changez-les si vous en avez besoin. Si vous utilisez simplement la référence du pointeur, si vous avez besoin d'intercepter les accès, vous ne pourrez pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top