80 votes

définitions de @property avec ARC : forte ou conserver ?

En utilisant Xcode 4.2 et de l'ARC, j'ai remarqué que le code généré automatiquement pour un NSManagedObject lit encore ce genre de propriétés:

@property (nonatomic, retain) NSString * someString;

1) ne devrait pas retain maintenant être remplacer par strong ou weak?

2) Pourquoi le code généré automatiquement toujours utiliser retain

3) Quel est le bon remplacement pour retain dans cette déclaration de propriété?

Je suis en train de déboguer un problème à l'aide de NSFetchRequest, et j'ai pensé que cela pourrait être la source du problème. Pensées?

110voto

matt Points 60113

1) ne devrait pas retenir maintenant être remplacer avec fort ou faible?

Pas de. Vous ne pouvez pas remplacer conserver avec faibles; elles sont différentes. Et fort est de 100% synonyme pour les retenir; ils sont identiques. Vous pouvez utiliser l'un ou l'autre, alors il n'est pas "doit" ici. Vous pouvez remplacer les conserver avec de fortes si vous le souhaitez, mais vous n'avez pas à.

2) Pourquoi le code généré automatiquement utilisent encore conserver

Pourquoi pas? Voir (1). conserver est correct, donc il n'y a pas de problème.

3) Quel est le bon remplacement pour retenir dans cette déclaration de propriété?

Il n'y a pas besoin de remplacer les conserver.

Je suis en train de déboguer un problème à l'aide de NSFetchRequest, et j'ai pensé que cela pourrait être la source du problème. Pensées?

Il n'est pas.

40voto

Phlibbo Points 3536

Pour répondre à trois questions dans l’un : et sont synonymes de l’autre, donc les deux sont corrects. États de la documentation

implique propriété

implique propriété

4voto

user2488343 Points 31

Avant l’ARC, il faut « libérer » un objet qui est maintenu. Cela veut dire conserver a contre-pièce. Après l’ARC vous n’avez pas besoin de sortir. Utilisez donc fort. Ses un indice visuel que vous n’avez pas besoin d’appeler release.

3voto

user2166308 Points 99

"conserver" est égale à "fort".

"fort" est utilisé, par exemple:

@property (nonatomic, strong) NSString * someString;

Et "__fort" est utilisé, par exemple:

-(void) someMethod
{
    __strong NSString* vStr = [[NSString alloc] initWithString:@"some string"];
}

Sur Apple Docs. dit:

Les Attributs De La Propriété

Les mots clés faibles et forts sont considérés comme une nouvelle propriété déclarée attributs, comme illustré dans les exemples suivants.

// The following declaration is a synonym for: @property(retain) MyClass *myObject;
property(strong) MyClass *myObject;

Apple doc. http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

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