将普通整形转换成 时要小心。不要直接将 BOOL 值与 YES 进行比较。

Ojbective-C 中把 BOOL 定义成无符号字符型,这意味着 BOOL 类型的值远不止 YES(1)或</span> <span class="pre">NO(0)。不要直接把整形转换成</span> <span class="pre">BOOL。常见的错误包括将数组的大小、指针值及位运算的结果直接转换成 BOOL ,取决于整型结果的最后一个字节,很可能会产生一个 值。当转换整形至 BOOL 时,使用三目操作符来返回 YES 或者 NO。(译者注:读者可以试一下任意的 256 的整数的转换结果,如 256、512 …)

BOOL 使用逻辑运算符(&&||!)是合法的,返回值也可以安全地转换成 BOOL,不需要使用三目操作符。

错误的用法:

同样,不要直接比较 YES/NOBOOL 变量。不仅仅因为影响可读性,更重要的是结果可能与你想的不同。

错误的用法: