我想将 BOOL 作为参数传递给 [NSArray makeObjectsPerformSelector:withObject:]
。例如
[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: NO];
上面的代码不起作用,因为 withObject 只接受 id。
正确的做法是什么?
我看到了一些这样的代码:
[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: (id)kCFBooleanTrue];
[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: (id)kCFBooleanFalse];
这在 4.2 模拟器上运行良好,但在 4.2 iphone 上失败。
最佳答案
您可以编写一个 UIButton(甚至 UIView)类别,允许您将 setEnabled: 与对象一起使用。
@interface UIButton(setEnabledWithObject)
- (void)setEnabledWithNSNumber:(NSNumber *)bNum;
@end
@implementation UIButton(setEnabledWithObject)
- (void)setEnabledWithNSNumber:(NSNumber *)bNum {
[self setEnabled:[bNum boolValue]];
}
@end
然后你可以使用
[buttons makeObjectsPerformSelector:@selector(setEnabledWithNSNumber:) withObject:[NSNumber numberWithBool:NO]];
[buttons makeObjectsPerformSelector:@selector(setEnabledWithNSNumber:) withObject:[NSNumber numberWithBool:YES]];
关于iphone - 将 BOOL 传递给 makeObjectsPerformSelector :withObject:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5374819/