Voici comment j'ai l'habitude d'écrire un setter sur mesure reten avant:
- (void)setMyObject:(MyObject *)anObject
{
[_myObject release], _myObject = nil;
_myObject = [anObject retain];
// Other stuff
}
Comment puis-je y parvenir avec ARC lorsque la propriété est définie sur forte. Comment puis-je vous assurer que la variable a un pointeur fort?
Le strong
prend soin de lui sur le niveau ivar, de sorte que vous pouvez simplement faire
- (void)setMyObject:(MyObject *)anObject
{
_myObject = anObject;
// other stuff
}
et c'est tout.
Remarque: Si vous faites cela sans propriétés automatiques, l'ivar serait
MyObject *_myObject;
et puis Arc prend des soucis des conserves et des versions pour vous (heureusement). __strong
est le qualificatif par défaut.
Juste pour résumer la réponse
.h fichier
//If you are doing this without the ivar
@property (nonatomic, strong) MyObject *myObject;
fichier .m
@synthesize myObject = _myObject;
- (void)setMyObject:(MyObject *)anObject
{
if (_myObject != anObject)
{
_myObject = nil;
_myObject = anObject;
}
// other stuff
}