我有一个方法,通过单个方法调用内部变化,我想传递它作为参数变化的方法的方法/签名...这可能在目标C中,或者是太多希望对于?
NSInvocation是一个用于在对象中包装方法调用的类.您可以设置选择器(方法签名),按索引设置参数.然后,您可以设置目标并调用invoke来触发调用,或者保持目标未设置并使用invokeWithTarget:在某种循环中在许多对象上调用它.
我觉得它有点像这样:
NSInvocation *inv = [[NSInvocation alloc] init]; [inv setSelector:@selector(foo:bar:)]; [inv setArgument:123 atIndex:0]; [inv setArgument:456 atIndex:1]; for (MyClass *myObj in myObjects) { [inv invokeWithTarget:myObj]; }
或者,如果您不想将调用对象传递给此方法,则可以使用SEL类型接受选择器(方法签名).
-(void)fooWithMethod:(SEL)selector;
然后将选择器分配给调用对象,以便在对象上调用它.
或者,如果您正在使用该fooWithMethod:(SEL)selector
方法,只需执行[myObject performSelector:selector]
该操作,如果它没有其他参数.
有关详细信息,请参阅NSObject.