我在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?
答案 0 :(得分:1)
您需要一个SEL
,就像您传递给methodSignatureForSelector:
的那个,而不仅仅是方法的名称。
[invocationToPass setSelector:@selector(Selector1:)];
您还需要注意结肠是重要的。如果该方法不带参数,则名称为Selector1
;如果需要,则名称为Selector:
。您需要将正确的名称放入@selector()
运算符。