当前位置:  开发笔记 > 编程语言 > 正文

是否可以在Objective-C中将方法作为参数传递?

如何解决《是否可以在Objective-C中将方法作为参数传递?》经验,为你挑选了2个好方法。

我有一个方法,通过单个方法调用内部变化,我想传递它作为参数变化的方法的方法/签名...这可能在目标C中,或者是太多希望对于?



1> Alex Wayne..:

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;

然后将选择器分配给调用对象,以便在对象上调用它.



2> cdespinosa..:

或者,如果您正在使用该fooWithMethod:(SEL)selector方法,只需执行[myObject performSelector:selector]该操作,如果它没有其他参数.

有关详细信息,请参阅NSObject.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有