为什么值'NO'被接受为对象而'YES'不被接受为对象

时间:2015-06-10 08:21:17

标签: ios objective-c

下面是我正在玩的代码,我需要发送BOOL作为方法setEnabled:的输入对象。当我添加NO时,它不会抛出任何错误并且按预期工作但当我尝试使用YES时,它会向我抛出错误与指针转换不兼容的整数 。为什么这种偏袒:P

BTW它甚至不适用于[NSNumber numberWithBool:NO]。我怎样才能为YES& NO

[self.navigationItem.rightBarButtonItems makeObjectsPerformSelector:@selector(setEnabled:) withObject:NO];
[self.navigationItem.rightBarButtonItems makeObjectsPerformSelector:@selector(setEnabled:) withObject:YES];

1 个答案:

答案 0 :(得分:-1)

首先,您的方法setEnabled:应该有NSNumber作为参数:

- (void) setEnabled:(NSNumber*)param {

}

然后你可以这样做:

[self.navigationItem.rightBarButtonItems makeObjectsPerformSelector:@selector(setEnabled:) withObject:@NO];
[self.navigationItem.rightBarButtonItems makeObjectsPerformSelector:@selector(setEnabled:) withObject:@YES];

关于错误:与指针转换不兼容的整数YES等于1,系统无法将该值转换为指针值。但是,正如@holex所说,NO等于nil = 0x00000000 = 0 = NO。