【问题标题】:How to change this loop on Fast Enumeration如何在快速枚举中更改此循环
【发布时间】:2013-07-04 11:46:51
【问题描述】:

我想更快地执行我的 For 循环,但我不知道 Fast Enumeration。 谁能建议我如何在fast enumeration 中更改这个 For 循环。

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


    }

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      NSString 没有实现NSFastEnumeration,这意味着实际上没有替代语法可以使您的循环更快(可能除了那些提到的here)。

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

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

      【讨论】:

        【解决方案3】:

        如果你想遍历给定字符串的每个字符

        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);
        }];
        

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

        【讨论】:

        • @user2497862 如果他们有帮助,请接受答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-10
        相关资源
        最近更新 更多