我正在研究一个类,该类涉及将选择器作为以后使用的变量。需要选择器进行一个参数,一个布尔值。这样执行:
IMP imp = [ob methodForSelector:selector];
void (*func)(id, SEL, BOOL) = (void *)imp;
func(ob, selector, YES);
如果有人试图设置具有与布尔相匹配的变量的选择器,我想返回错误。有什么方法,当我可以检查其参数是否为bool时,或者一般而言,已经通过了哪个类别或类型的参数?
为什么?
我正在一个课程中设置一个准通知中心
查看方法签名:
NSMethodSignature * sig = [ob methodSignatureForSelector:selector];
NSAssert(0 == strcmp(@encode(BOOL), [sig getArgumentTypeAtIndex:2]),
@"Method must take a BOOL as its sole argument.");