-1

我在 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?
4

1 回答 1

1

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

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

您还需要知道冒号很重要。如果该方法不带参数,则名称为Selector1; 如果需要一个,名称是Selector:。您需要将正确的名称放入@selector()运算符中。

于 2012-06-27T06:58:44.877 回答