Objective c 添加到NSMutableArray时重用循环中的对象

Objective c 添加到NSMutableArray时重用循环中的对象,objective-c,nsmutablearray,Objective C,Nsmutablearray,在循环中将对象添加到NSMutableArray时,有哪些最佳做法可以重用为要添加到数组中的对象分配的内存 例如: for (int i = 0; i < 5; i++) { SampleObject *sampleObject = [[SampleObject alloc] init]; sampleObject.someProperty = ... [sampleObjectArray addObject:sampleObject]; [sampleO

在循环中将对象添加到
NSMutableArray
时,有哪些最佳做法可以重用为要添加到数组中的对象分配的内存

例如:

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

    [sampleObjectArray addObject:sampleObject];
    [sampleObject release];
}
for(int i=0;i<5;i++)
{
SampleObject*SampleObject=[[SampleObject alloc]init];
sampleObject.someProperty=。。。
[sampleObjectArray addObject:sampleObject];
[样本对象释放];
}
这是正确的方法吗?我将
sampleObjectArray
作为一个带有(非原子,retain)的属性。它应该是复制的而不是保留的吗


将所有代码从循环中分配出来,然后在循环完成时释放不是更好吗?

您分析过代码并发现这是您的问题吗?如果没有,不要担心微观优化

也就是说,数组维护对它们所包含对象的强引用—当调用
addObject:
完成时,
sampleObjectArray
sampleObject
上有一个retain。因此,我认为您给定的示例代码是合适的—您
alloc
/
init
对象,因此您
适当地释放它,它仅由它所在的数组保持


至于退出循环的
alloc
ing,我不确定这是否有效-您仍然必须对数组中的每个条目执行
alloc
,以免最终得到同一对象的五个副本。这最好在一个循环中完成,如果它在一个循环中,为什么不与您已有的循环在同一个循环中?

您是否分析了您的代码并发现这是一个问题?如果没有,不要担心微观优化

也就是说,数组维护对它们所包含对象的强引用—当调用
addObject:
完成时,
sampleObjectArray
sampleObject
上有一个retain。因此,我认为您给定的示例代码是合适的—您
alloc
/
init
对象,因此您
适当地释放它,它仅由它所在的数组保持

至于退出循环的
alloc
ing,我不确定这是否有效-您仍然必须对数组中的每个条目执行
alloc
,以免最终得到同一对象的五个副本。这最好在一个循环中完成,如果它在一个循环中,为什么不在与您已有的循环相同的循环中呢