有没有办法在选择器中发送BOOL
?
[self performSelector:@selector(doSomething:) withObject:YES afterDelay:1.5];
或者我应该使用NSInitation
?有人可以写一个示例吗?
最佳答案
如果您无法更改目标方法签名以接受 NSNumber
来代替 BOOL
,您可以使用 NSInitation
代替performSelector
的:
MyTargetClass* myTargetObject;
BOOL myBoolValue = YES; // or NO
NSMethodSignature* signature = [[myTargetObject class] instanceMethodSignatureForSelector: @selector( myMethodTakingBool: )];
NSInvocation* invocation = [NSInvocation invocationWithMethodSignature: signature];
[invocation setTarget: myTargetObject];
[invocation setSelector: @selector( myMethodTakingBool: ) ];
[invocation setArgument: &myBoolValue atIndex: 2];
[invocation invoke];
关于Objective-C:如何使用 BOOL 类型参数调用 PerformSelector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075620/