Objective-C:如何使用 BOOL 类型参数调用 PerformSelector?

标签 objective-c iphone selector nsinvocation

有没有办法在选择器中发送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/

相关文章:

ios - 应用程序被拒绝 - 缺少 info.Plist key

ios - UIButton 和选择器 iOS

javascript - 复杂的 JQuery 选择器 - 如何选择任意一个 'generation' ?

ios - 无法从核心数据中获取特定列

ios - 如何使用 Storyboard在界面构建器中编辑手动添加的 UINavigationBar subview ?

iphone - 如何创建一个完整的 NSDate 对象来表示下一个指定的日期时间?

ios - WKWebView 不断打破约束?

objective-c - 如何从 NSUserDefaults 中的对象获取 key ?

ios - 原生 iOS 国家/地区选择器

javascript - jQuery - 在按钮之前选择 li