如何处理内存以获取只读属性

时间:2012-05-29 03:36:12

标签: iphone objective-c ios

我的课程中有以下属性

@property (nonatomic, retain, readonly) NSMutableArray *children;

我有以下方法为此属性分配内存。

- (NSMutableArray *)children {
    if (!children) {
        children = [[NSMutableArray alloc] initWithCapacity:1];
    }

    return children;
}

当我在xcode中运行探查器时,它显示我在上述方法中有内存泄漏。我对在这种情况下释放记忆感到困惑。 如果我将其与autorelase一起使用,如果可以,如下。

children = [[[NSMutableArray alloc] initWithCapacity:1] autorelease];

可以帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

你释放孩子们的dealloc吗?如果没有,那就是你的问题!

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

答案 1 :(得分:1)

为什么不让编译器为你工作呢?您可以执行以下操作:

- (id) init {
if(self=[super init]) {
    children = [[NSMutableArray alloc] init]
}

使用dealloc iTukker向您展示并合成属性。

至少对我而言,这更为直截了当。