Я хочу выполнить цикл For быстрее, но понятия не имею о Fast Enumeration
. Может ли кто-нибудь предложить мне, как изменить этот цикл For в fast enumeration
.
NSString *strCorrectWord;
for(i=0;i<[self.strCorrectWord length];i++)
{
}
Я хочу выполнить цикл For быстрее, но понятия не имею о Fast Enumeration
. Может ли кто-нибудь предложить мне, как изменить этот цикл For в fast enumeration
.
NSString *strCorrectWord;
for(i=0;i<[self.strCorrectWord length];i++)
{
}
--> Быстрое перечисление выполняется по коллекции в объекте c, например, если есть NSArray строк, то для каждой строки мы реализуем быстрое перечисление цикла For следующим образом:
for(NSString *str in NSArray object)
{
statement;
}
NSString
не реализует NSFastEnumeration
, что означает, что на самом деле не существует альтернативного синтаксиса для ускорения цикла (за исключением упомянутых здесь, возможно).
Узким местом в производительности, скорее всего, будет код, который вы выполняете внутри каждой итерации цикла, а не механика самого цикла, но вы не включили это в вопрос.
Быстрое перечисление — это просто замена более медленным методам, которые раньше использовались для перечисления по коллекциям.
Если вы хотите перебрать каждый символ данной строки
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);
}];
перечисление с блоком в большинстве случаев является более быстрым решением. Используя параметры, вы можете изменить его, чтобы дать вам подстроку для каждого символа или каждого слова.