如何在快速枚举上更改此循环

时间:2013-07-04 11:46:52

标签: objective-c for-loop fast-enumeration

我想更快地执行我的For循环,但我不了解Fast Enumeration。 任何人都可以建议我如何在fast enumeration中更改此For循环。

NSString *strCorrectWord;
    for(i=0;i<[self.strCorrectWord length];i++)
    {


    }

3 个答案:

答案 0 :(得分:0)

- &gt; 快速枚举是针对目标c中的集合完成的,例如,如果有一个NSArray字符串,那么对于每个字符串,我们实现For循环的快速枚举: -

for(NSString *str in NSArray object)
{
    statement;
}

答案 1 :(得分:0)

NSString没有实现NSFastEnumeration,这意味着没有真正的替代语法可以让你的循环更快(除了那些提到的here之外)。

性能瓶颈很可能是你在循环的每次迭代中执行的代码,而不是循环本身的机制,但你没有在问题中包含它。

快速枚举只是用于枚举通过集合的较慢方法的替代品。

答案 2 :(得分:0)

如果要循环遍历给定字符串的每个字符

NSString *strCorrectWord = @"Test";

NSRange range = NSMakeRange(0, strCorrectWord.length);

[strCorrectWord enumerateSubstringsInRange:range options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

    //Substring is each char
    NSLog(@"%@", substring);
}];

使用块进行枚举在大多数情况下是更快的解决方案。使用这些选项可以更改它,为每个字符或每个单词提供一个子字符串。