Метод, который вы вызываете с помощью NSInvocationOperation
, может принимать только один параметр, и этот параметр должен быть объектом Objective-C (например, NSNumber
), а не простым типом C (например, int
).
Как правило, для обработки нескольких параметров вы используете NSDictionary или NSArray для хранения параметров:
- (void)myMethod:(NSDictionary*)parameters
{
int a = [[parameters objectForKey:@"A"] intValue];
int b = [[parameters objectForKey:@"B"] intValue];
// do something with a and b
}
[[NSInvocationOperation alloc]
initWithTarget:self
selector:@selector(myMethod:)
object:[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:123], @"A",
[NSNumber numberWithInt:456], @"B",
nil]];
В качестве альтернативы, вы можете использовать объект NSInvocation
для вызова вашего метода.Это допускает любое число и любой тип параметров, но обычно гораздо проще просто поместить ваши параметры в NSDictionary, чем создать объект NSInvocation.
Информация о том, как использовать NSInvocation.