2010-01-05 101 views
0

在循环中将对象添加到NSMutableArray时,有哪些最佳实践可用于重新使用为要添加到数组的对象分配的内存?添加到NSMutableArray时在循环中重用对象

例如:

for (int i = 0; i < 5; i++) 
{ 
    SampleObject *sampleObject = [[SampleObject alloc] init]; 
    sampleObject.someProperty = ... 

    [sampleObjectArray addObject:sampleObject]; 
    [sampleObject release]; 
} 

这是正确的做法?我有sampleObjectArray作为一个财产(非原子,保留)就可以了。它应该是复制而不是保留?

分配出循环,然后在循环完成时释放会更好吗?

回答

4

你是否分析了你的代码,发现这对你来说是个问题?如果不是,不要担心微观优化。

也就是说,阵列保持对它们包含的对象的强烈引用 - 当对addObject:的调用完成时,sampleObjectArraysampleObject上有保留。因此,我认为你给出的示例代码是适当的 - 你alloc/init的对象,所以你release它作为合适的,它是由它生活在阵列扶住只有

至于alloc荷兰国际集团圈外的,我。我不确定这会起作用 - 对于阵列中的每个条目,您仍然需要alloc,否则您会收到同一对象的五份副本。这最好在一个循环内完成,如果它在一个循环中,为什​​么不在相同的循环中作为已有的循环?

相关问题