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

说明: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)