2010-03-15 4 views
1

У меня есть это право ...Управление памятью/вопрос собственности?

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

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

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

Я уверен, что я делаю это право (но просто хотел проверить). По моему способу мышления NSKeyedUnarchiver возвращает объект, которому он владеет, я затем беру на себя ответственность через @property, позже я выпускаю реакторCore, и все хорошо?

ответ

3

Я считаю, что ваш код является corect. Если у вас есть сомнения, вы можете использовать Build and Analize в XCode для проверки возможных утечек.

+0

..Analize in XCode. Что это делает с вашим кодом ..? ;) –

+0

Спасибо, просто хотел проверить, пришедший на Objective-C совсем недавно, заняв некоторое время (и несколько прочитанных документов по управлению памятью), чтобы понять, как все работает ... высоко ценится. – fuzzygoat

3

Правильно. Метод NSKeyedUnarchiver, так как он не содержит слов copy, new, или что-то в этом роде, вернет объект с автореализацией, который вам нужно сохранить (как вы это делаете), чтобы сохранить его право собственности.

+0

Спасибо, Ной. – fuzzygoat

Смежные вопросы