我有点担心在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]
,但我是否也应该像以上那样改变方便性方法。
加里
答案 0 :(得分:2)
你所展示的方便方法应该返回不属于调用者的对象,在这两种情况下都是指自动释放的对象,所以你的代码是正确的。
答案 1 :(得分:0)
如果您担心大量自动释放的对象,请在进入循环之前创建NSAutoReleasePool
。循环完成后,-drain
池。这将最大限度地减少自动释放的对象被保留的时间。