2012-05-25 5 views
0

J'ai supprimé le message précédent ...objectif-c conserver, affecter et copier?

Lequel dois-je utiliser si j'ai une classe propriétaire d'un objet objA? Je sais que si l'objet n'était pas propre à la classe, il doit être conservé.

@class A 

@property (retain) ObjectA objA; 

@end 

@implementation A 

-(void) func { 
    self.objA = [[ObjectA alloc] init]; 
} 

@end 

Si objA dans la classe A est défini comme retain, et a été initialisé dans func en utilisant la fonction init. Est-ce que cela donnerait 2 retenir le compte ou juste 1 retenir le compte.

+0

duplication possible de [Que fait @property (conserver) faire?] (Http://stackoverflow.com/questions/6360499/what-does-propertyretain-do) –

Répondre

1

alloc donne conserver le nombre 1. self.objA = donnera conserver le nombre 2 (à cause de la propriété retenir)

+0

Désolé, vous êtes droite. Je vais l'éditer. – whooops

0

je l'aurais fait:

- (void) func {objA = [[ObjectA alloc] init]; } 

ou

- (void) func { self.objA = [[[ObjectA alloc] init] autorelease]; } 

pour éviter les fuites de mémoire. Cependant, je préfère la première solution

Questions connexes