2010-03-15 3 views
1

Dois-je ce droit ...Gestion de la mémoire/question de propriété?

// Reactor.h 
@property(nonatomic, retain) NSMutableArray *reactorCore; 

// Reactor.m 
[self setReactorCore:[NSKeyedUnarchiver unarchiveObjectWithFile:[self dataFilePath]]]; 
... 

-(void)dealloc { 
    [reactorCore release]; 
    [super dealloc]; 
} 

Je suis assez sûr que je fais ce droit (mais je voulais juste vérifier). Selon ma façon de penser NSKeyedUnarchiver renvoie un objet qui lui appartient, je prends alors possession de la propriété @property, plus tard je libère reactorCore et tout va bien?

Répondre

3

Je crois que votre code est corect. En cas de doute, vous pouvez utiliser Build and Analize en XCode pour vérifier d'éventuelles fuites.

+0

..Analisez dans XCode. Qu'est-ce que cela fait à votre code ..? ;) –

+0

Merci, je voulais juste vérifier, venir à Objective-C seulement récemment pris son temps (et quelques lectures des documents de gestion de la mémoire) pour se familiariser avec comment les choses fonctionnent ... très apprécié. – fuzzygoat

3

C'est vrai. La méthode NSKeyedUnarchiver - puisqu'elle ne contient pas les mots copy, new, ou quelque chose comme ça - retournera un objet autoreleased, que vous devez conserver (comme vous le faites) pour en garder la propriété.

+0

Merci Noah. – fuzzygoat