Ответ 1
Блок очень похож на анонимную функцию. Таким образом, вы можете использовать
возврат
для выхода из функции с возвратом типа void.
Если у меня есть NSArray, и я использую enumerateUsingBlock
для циклического перемещения элементов в массиве, но в некоторых случаях мне нужно пропустить тело цикла и перейти к следующему элементу, есть ли эквивалент continue
в блоке или могу ли я использовать continue
напрямую?
Спасибо!
обновление:
Просто хочу уточнить, что я хочу сделать:
for (int i = 0 ; i < 10 ; i++)
{
if (i == 5)
{
continue;
}
// do something with i
}
мне нужен эквивалент continue
в блоке.
Блок очень похож на анонимную функцию. Таким образом, вы можете использовать
возврат
для выхода из функции с возвратом типа void.
Используйте "продолжить" при использовании быстрого перечисления для этого.
Пример кода:
NSArray *myStuff = [[NSArray alloc]initWithObjects:@"A", @"B",@"Puppies", @"C", @"D", nil];
for (NSString *myThing in myStuff) {
if ([myThing isEqualToString:@"Puppies"]) {
continue;
}
NSLog(@"%@",myThing);
}
и вывод:
2015-05-14 12:19:10.422 test[6083:207] A
2015-05-14 12:19:10.423 test[6083:207] B
2015-05-14 12:19:10.423 test[6083:207] C
2015-05-14 12:19:10.424 test[6083:207] D
Не щенок в поле зрения.
Вы не можете использовать continue в блоке, вы получите error: continue statement not within a loop
. использовать return;
[array enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) {
/* Do something with |obj|. */
if (idx==1) {
return;
}
NSLog(@"%@",obj);
}];