iphone - 将 BOOL 传递给 makeObjectsPerformSelector :withObject:

标签 iphone nsarray

我想将 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/

相关文章:

iphone - 多次验证相同的苹果收据

Swift:按一个值对 CGPoints 的 NSArray 进行排序,然后按另一个值排序?

objective-c - 根据另一个 NSArray 字符串的排序对自定义对象的 NSArray 进行排序

ios - CAKeyframeAnimation 在 UIImageView 中具有不同的动画持续时间值

iphone - 将批量XML数据更新并插入到我的SQLite数据库中

iphone - 防止 UISearchDisplayController 隐藏导航栏

ios - 如何检查 NSArray 中的 NSDate yyyy/mm/dd 并进行比较?

ios - NSArray 对比NSMutableArray 问题

iphone - 我如何使用相同的导航 Controller 从不同的单元格转到不同的 View Controller ?

iphone - NSURLConnection 的内存管理