美文网首页
1.17、建议:BOOL的陷阱,不要直接把整形转换成BOOL

1.17、建议:BOOL的陷阱,不要直接把整形转换成BOOL

作者: 半升多瑙河 | 来源:发表于2016-07-19 14:57 被阅读46次

说明:Ojbective-C中把BOOL定义成无符号字符型,不要直接把整形转换成BOOL。常见的错误 包括将数组的大小、指针值及位运算的结果直接转换成BOOL ,取决于整型结果的最后一个字节,很可能会产生一个NO值。当转  换整形至BOOL时,使用三目操作符来返回YES或者NO。(译者 注:读者  可以试一下任意的256的整数的转换结果,如256、512 ...)  示例:错误的用法:  - (BOOL)isBold {return [self fontTraits] & NSFontBoldTrait;}  - (BOOL)isValid {return [self stringValue];  }  正确的用法:• (BOOL)isBold { return ([self fontTraits] & NSFontBoldTrait) ?  YES : NO;  } - (BOOL)isValid {return [self stringValue] != nil;} - (BOOL)isEnabled {return  [self isValid] && [self isBold]; }  

相关文章

网友评论

      本文标题:1.17、建议:BOOL的陷阱,不要直接把整形转换成BOOL

      本文链接:https://www.haomeiwen.com/subject/cjimjttx.html