objective-c – 强制转换为BOOL和发送消息boolValue有什么区别?

前端之家收集整理的这篇文章主要介绍了objective-c – 强制转换为BOOL和发送消息boolValue有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我相信这两种方法之间的区别是什么(转换为BOOL):
BOOL boolOne = (BOOL) [dictionary objectForKey:@"boolValue"];
BOOL boolTwo = [[dictionary objectForKey:@"boolValue"] boolValue];

何时应该使用另一个?

解决方法

他们是完全不同的.

第一个从字典中获取对象指针,然后将指针解释为BOOL.这意味着任何非零指针都将被解释为YES,nil为NO.在具体示例中,由于字典不能包含nil指针,因此您只能从这行代码中获得YES.

第二个从字典中获取相同的对象,然后发送消息boolValueto该对象.据推测,如果对象识别出该消息,那么将导致该对象的BOOL版本.

作为一个具体的例子,如果字典包含与密钥@“boolValue”相关联的NSNumber,则NSNumber将接收消息boolValue,如果它是非零,则返回YES,否则返回NO.

所以要回答你的问题,你应该使用第二种形式.将指针强制转换为BOOL很少有任何意义.

猜你在找的C&C++相关文章