是否可以将另一个类的方法设置为NSInvocation对象的选择器属性?

时间:2012-06-27 06:50:55

标签: objective-c selector nsinvocation

我在ClassA中有一个名为Selector1的方法,

在ClassB中,我想创建一个NSInvocation对象,并将Selector1设置为对象的选择器。这可能吗?我不知道设置这个的正确方法。

我试图在ClassB中使用的代码是这样的:

NSMethodSignature *signature = [ClassA methodSignatureForSelector:@selector(Selector1:)];
NSInvocation *invocationToPass = [NSInvocation invocationWithMethodSignature:signature];
invocationToPass.target = self;
invocationToPass.selector = Selector1; // How can I assign Selector1 from ClassA?

1 个答案:

答案 0 :(得分:1)

您需要一个SEL,就像您传递给methodSignatureForSelector:的那个,而不仅仅是方法的名称。

[invocationToPass setSelector:@selector(Selector1:)];

您还需要注意结肠是重要的。如果该方法不带参数,则名称为Selector1;如果需要,则名称为Selector:。您需要将正确的名称放入@selector()运算符。