Я пытаюсь создать метод в категории класса NSArray и использовать его, который проверяет каждый объект (строку) в массиве и возвращает массив, содержащий первый объект, который проходит тест.
Вот метод, который я определил:
- (NSArray *)objectsPassingTest:(BOOL(^)(id obj, BOOL *stop))predicate
{
NSMutableArray *outputArray = [NSMutableArray array];
for (id obj in self)
{
BOOL *stop;
if (predicate(obj,stop)) {
[outputArray addObject:obj];
}
if (stop) {
break;
}
}
return [NSArray arrayWithArray:outputArray];
}
А вот фрагмент кода, в котором я его использовал:
NSArray *inputArray = [NSArray arrayWithObjects:@"Objective - C", @"is", @"fun", nil];
NSArray *outputArray = [inputArray objectsPassingTest:^BOOL(id obj, BOOL *stop) {
if ([obj length] > 2) {
*stop = YES;
return YES;
}
else
{
return NO;
}
}];
NSLog(@"outputArray - %@",outputArray);
Проблема в том, что после отображения правильного вывода Objective -c в этом случае происходит сбой приложения.
Может кто-нибудь подсказать мне, если я что-то не так делаю где-то?