Objective c 是否用单个对象替换多个数组内容?
我有一个Objective c 是否用单个对象替换多个数组内容?,objective-c,cocoa-touch,cocoa,nsmutablearray,Objective C,Cocoa Touch,Cocoa,Nsmutablearray,我有一个NSMutableArray,其中包含要替换为NSNull对象的内容 我就是这么做的: NSMutableArray* nulls = [NSMutableArray array]; for (NSInteger i = 0; i < myIndexes.count; i++) [nulls addObject:[NSNull null]]; [stageMap replaceObjectsAtIndexes:myIndexes withObjects:nulls];
NSMutableArray
,其中包含要替换为NSNull
对象的内容
我就是这么做的:
NSMutableArray* nulls = [NSMutableArray array];
for (NSInteger i = 0; i < myIndexes.count; i++)
[nulls addObject:[NSNull null]];
[stageMap replaceObjectsAtIndexes:myIndexes withObjects:nulls];
NSMutableArray*nulls=[NSMutableArray];
对于(NSInteger i=0;i
我怎样才能更有效地做到这一点?
是否有方法枚举NSIndexSet,以便逐个替换数组内容
解决
建议的方法快2倍(平均0.000565s比0.001210s):
if(myIndex.count>0)
{
NSInteger index=[myIndex firstIndex];
对于(NSInteger i=0;i
您可以为循环使用。从第一个索引开始,使用索引greaterthanindex:
获取下一个索引,并在点击最后一个索引后停止
别忘了考虑空索引集。在这种情况下,第一个索引和最后一个索引都将NSNotFound
。最简单的方法是测试索引集的计数;如果是零,不要循环
还有,Jason Coco对评测的看法。在程序运行之前不要太担心效率,在运行Shark(或Instruments,如果你喜欢的话)并准确找到慢的地方之前不要去优化事情。你可以使用进行
循环。从第一个索引开始,使用索引greaterthanindex:
获取下一个索引,并在点击最后一个索引后停止
别忘了考虑空索引集。在这种情况下,第一个索引和最后一个索引都将NSNotFound
。最简单的方法是测试索引集的计数;如果是零,不要循环
还有,Jason Coco对评测的看法。在你的程序运行之前不要太担心效率,在你运行Shark(或Instruments,如果你喜欢的话)并准确发现什么是慢的之前不要去优化东西。我意识到这是一个非常古老的问题,但我在这里发布,以防其他人发现你可以使用的问题:
[indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
NSLog(@"index: %d", idx);
[objectArray replaceObjectAtIndex:idx
withObject:newObject];
}];
这要简洁得多。我意识到这是一个非常古老的问题,但我在这里发帖,以防其他人发现这个问题,您可以使用:
[indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
NSLog(@"index: %d", idx);
[objectArray replaceObjectAtIndex:idx
withObject:newObject];
}];
哪一个更简洁。这是不是行为效率低下?i、 例如,当你评测你的应用程序时,你是否看到这个代码片段中有很大的减速?这是不是表现得很低效?i、 例如,当你评测你的应用程序时,你是否在这个代码片段中看到了很大的减速?谢谢你的提示。我将尝试对其进行基准测试,看看新方法是否更快。谢谢你的提示。我将尝试对此进行基准测试,看看新方法是否更快。