iPhone,内存/自动释放对象

时间:2010-04-09 15:18:09

标签: iphone objective-c memory-management

我有点担心在iPhone上构建大量自动释放的对象。我的应用程序很简单,所以它应该不是问题,但我只想检查方法(如下所示)是否正确和可接受

-(NSNumber *)numberFromCore {
    NSNumber *removedNumber = [[dataCore objectAtIndex:0] retain];
    [dataCore removeObjectAtIndex:0];
    return [removedNumber autorelease];
}

-(NSString *)coreSizeAsString {
    NSString *coreSize = [NSString stringWithFormat:@"%d", [dataCore count]];
    return coreSize;
}

在可能的情况下,我使用了[[Class alloc] init][Class release],但我是否也应该像以上那样改变方便性方法。

加里

2 个答案:

答案 0 :(得分:2)

你所展示的方便方法应该返回不属于调用者的对象,在这两种情况下都是指自动释放的对象,所以你的代码是正确的。

答案 1 :(得分:0)

如果您担心大量自动释放的对象,请在进入循环之前创建NSAutoReleasePool。循环完成后,-drain池。这将最大限度地减少自动释放的对象被保留的时间。