我有一个 NSMutableArray
,其中的内容我想用 NSNull
对象替换。
这就是我所做的:
NSMutableArray* nulls = [NSMutableArray array];
for (NSInteger i = 0; i < myIndexes.count; i++)
[nulls addObject:[NSNull null]];
[stageMap replaceObjectsAtIndexes:myIndexes withObjects:nulls];
我怎样才能更有效地做到这一点? 有没有办法枚举一个 NSIndexSet,这样我就可以将数组内容一一替换?
已解决
事实证明,建议的方法速度提高了 2 倍(平均 0.000565 秒 vs 0.001210 秒):
if (myIndex.count > 0)
{
NSInteger index = [myIndex firstIndex];
for (NSInteger i = 0; i < myIndex.count; i++)
{
[stageMap replaceObjectAtIndex:index withObject:[NSNull null]];
index = [myIndex indexGreaterThanIndex:index];
}
}
最佳答案
您可以使用for
循环。从第一个索引开始,使用 indexGreaterThanIndex:
获取下一个索引,并在到达最后一个索引后停止。
不要忘记考虑空索引集。在这种情况下,第一个和最后一个索引都将为 NSNotFound。最简单的方法是测试索引集的计数;如果为零,则不循环。
另外,Jason Coco 关于分析的说法。在您的程序正常运行之前,不要太担心效率,并且在运行 Shark(或 Instruments,如果您喜欢的话)并准确找到缓慢的地方之前,不要去优化。
关于objective-c - 用单个对象替换多个数组内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741367/