【发布时间】:2014-05-15 12:21:30
【问题描述】:
任何人都可以建议如何使用快速枚举对 NSArray 的元素进行字符串化。使用普通的 for 循环很容易做到这一点。下面的代码工作正常
_tempArray = [[NSMutableArray alloc] initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F", nil];
NSUInteger i=0;
for (; i<[_tempArray count]; i++) {
if ([[_tempArray objectAtIndex:i] isEqualToString:@"A"]) {
[_tempArray replaceObjectAtIndex:i withObject:@"a"];
}
}
我想和上面的代码一样做快速枚举。我尝试了下面的代码但它给出了*****Error:Collection <__nsarraym:> was mutated while being enumerated.******,这意味着枚举时无法修改集合。任何人都可以提出任何方法来实现它。**
NSUInteger j=0;
for (NSString *temp in _tempArray) {
if ([temp isEqualToString:@"A"]) {
[_tempArray replaceObjectAtIndex:j withObject:@"a"];
}
j++;
}
【问题讨论】:
-
有效的代码有什么问题?你的最终目标是什么?
-
也许你想用
lowercaseString -
@Wain 因为它比普通的 for 循环更快
-
您需要担心的迭代有多大(以及每次迭代完成的工作量有多大)?您已进行分析以证明这对您来说是一个瓶颈?
-
这是过早的优化——不要这样做。以最简洁、最简单、最清晰的方式编写代码以理解这一点是可能的。然后,如果出现问题,请使用分析器工具找出真正的性能问题并进行修复。
标签: ios objective-c cocoa-touch cocoa nsarray