У меня есть массив, который я повторяю и ищу конкретный флаг. Если значение флага равно nil, я вызываю метод, который генерирует объект вызова и возвращает результат вызова.
Моя структура кода выглядит следующим образом
for(NSString *key in [taxiPlanes allKeys])
{
Plane *currentPlane = [taxiPlanes objectForKey:key];
if(currentPlane.currentAction == nil)
{
NSString *selector = [[currentPlane planeTakeoffSequence] firstObject];
currentPlane.currentAction = selector;
// Calling for NSInvocation in [self ...]
NSArray *action = [NSArray arrayWithArray:[self operationFromTakeoffAction:currentPlane.currentAction AtPoint:currentPlane.position]];
NSLog(@"%@",action);
}
}
Метод, который генерирует NSInvocation
-(NSArray *) operationFromTakeoffAction:(NSString *) action AtPoint:(CGPoint) flightPoint
{
NSMethodSignature *methodSignature = [FlightOperations instanceMethodSignatureForSelector:NSSelectorFromString(action)];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature];
[invocation setTarget:fOps];
[invocation setSelector:NSSelectorFromString(action)];
[invocation setArgument:&flightPoint atIndex:2];
NSArray *resultSet = [NSArray alloc]init];
[invocation invoke];
[invocation getReturnValue:&resultSet];
return resultSet;
}
В цикле for, без вызова метода для NSInvocation ([self....]), цикл просто выполняется отлично и не сбой. Но когда я представляю метод для вызова NSInvocation, я могу видеть, что NSLog in для циклов печатает ожидаемый результат NSArray, но он выходит из строя с сообщением об ошибке EXC_BAD_ACCESS.
Я не могу понять, почему это не удается, хотя NSInvocation возвращает правильный результат. Без NSInvocation для цикла не сбой.
Любые предложения были бы полезными.
Спасибо