56 votes

Propriété vs ivar dans les moments d'ARC

C'est ma compréhension que l'établissement d'un ivar conserve aujourd'hui l'objet qui lui est affecté, depuis la définition de variables par défaut à l' strong de qualification. Parce que ivars sont dans le champ d'application de l'objet qu'elles sont déclarées dans et strong conserve des objets à l'intérieur de la portée de la variable, cela signifie que le ivars valeur ne serait jamais sorti alors que l'objet contenant le ivar est encore en vie.

Est-ce correct?

Si oui, suis-je en droit de penser qu'il y a, en termes de gestion de la mémoire, pas de différence entre une retenue (forte) de la propriété et un simple ivar plus?

70voto

bearMountain Points 1305

Si une variable:

  1. Est déclarée dans une classe à l'aide de l'ARC.
  2. Est utilisé uniquement pour la classe mise en œuvre (non exposé dans le cadre de la classe de l'interface).
  3. Ne nécessite pas de KVO.
  4. Ne nécessite pas de coutume getter/setter.

Ensuite, il convient de le déclarer comme un ivar sans @property/@synthesize, et de s'y référer directement à l'intérieur de la mise en œuvre. Il est en ligne avec l'Encapsulation de déclarer ce ivar dans la classe de mise en œuvre de fichier.

// MyClass.h
@interface MyClass : ParentClass
@end

// MyClass.m
@implementation MyClass {
    NSString *myString;
}

- (void)myMethod {
    myString = @"I'm setting my ivar directly";
}
@end
  • Cette ivar seront traités comme __strong par l'ARC compilateur.
  • Il sera initialisé à l' nil si c'est un objet, ou 0 s'il s'agit d'une primitive.

6voto

Mattias Wadman Points 6542

Vous ne pouvez pas utiliser KVO et ne personnalisée des accesseurs et des mutateurs avec les variables d'instance autres que celui qu'ils sont très similaires lors de l'utilisation de l'ARC.

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