我正在编写一个自定义帮助方法,它会被大量使用并返回几个按钮。按下时,每个按钮当然都有自己的目标选择器,我想将选择器作为参数传递给此方法,以便返回的按钮具有指定的选择器。
但我不确定如何将选择器作为方法参数传递。像这样:
-(returnedInstance)someMethod:(WhatClass?*)selectedFunction{
[SomeClassWithASelectorParameter method:whatever selector:@selector(selectedFunction)];
}
其中selectedFunction
是传递给方法的参数。
我尝试将WhatClass?*
作为NSString和SEL,但结果是:
[NSInvocation invocationWithMethodSignature:]:方法签名参数不能为零
答案 0 :(得分:4)
为什么不通过SEL
?即选择器。像这样:
-(returnedInstance)someMethod:(SEL)selectedFunction{
[SomeClassWithASelectorParameter method:whatever selector:selectedFunction];
}
或者,NSSelectorFromString
:
-(returnedInstance)someMethod:(NSString*)selectedFunction{
[SomeClassWithASelectorParameter method:whatever selector:NSSelectorFromString(selectedFunction)];
}
答案 1 :(得分:1)
您想使用SEL
,当您引用它时,您不必使用selector
:
-(returnedInstance)someMethod:(SEL)selectedFunction{
[SomeClassWithASelectorParameter method:whatever selector:selectedFunction];
}