Я пытаюсь запустить этот код в iOS 8, но я получаю ошибку плохого доступа в вызванном методе, это нормально работает в iOS 7. Кто-нибудь имеет представление об этом ?NSInvocation invoke дает плохой доступ в iOS 8
-(double) calcularColumna:(int) anio :(int) mes :(NSString *) columna {
NSInvocation * invocation = [selectores objectForKey:columna];
if(!invocation){
NSString * metodo = [NSString stringWithFormat:@"fondo%@:anio:mes:",columna];
SEL selector = NSSelectorFromString(metodo);
if(![self respondsToSelector:selector]) {
return -1;
}
invocation = [NSInvocation invocationWithMethodSignature:[[self class] instanceMethodSignatureForSelector:selector]];
invocation.selector = selector;
invocation.target = self;
[invocation setArgument:(__bridge void *)(self.valoresEntrada) atIndex:2];
[selectores setObject:invocation forKey:columna];
}
double valor = 0;
[invocation setArgument:&anio atIndex:3];
[invocation setArgument:&mes atIndex:4];
[invocation invoke];
[invocation getReturnValue:&valor];
/* }else {
valor = -1;
}*/
return valor;
}
Спасибо за ваши комментарии.
благодарит вас за комментарий, сейчас я попробую. Я не могу использовать objc_msgSend. Я получаю сообщение о том, что он не может использоваться с компилятором C99. –
Просто протестировано, и это сработало: D. Привет, друг! –