内存管理/所有权问题?

时间:2010-03-15 19:24:03

标签: objective-c cocoa

我有这个权利......

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

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

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

我很确定我做得对(但只是想检查一下)。按照我的想法,NSKeyedUnarchiver返回它拥有的一个对象,然后我通过@property取得所有权,之后我发布了reactorCore并且一切都很好?

2 个答案:

答案 0 :(得分:3)

我相信你的代码是正确的。如有疑问,可以在XCode中使用Build and Analize来检查可能的泄漏。

答案 1 :(得分:3)

没错。 NSKeyedUnarchiver方法 - 因为它不包含单词copynew或类似的东西 - 将返回一个自动释放的对象,您需要保留该对象(正如您所做)保持对它的所有权。