Llu*_*uís 1 boolean objective-c ios
有人告诉我,Objective-C中的BOOL是unsigned char的typedef,YES&NO关键字是编码字符.这不是我第一次听到它.我已经看过这是因为Apple在C标准之前使用BOOL提供了一个_Bool类型,我错了吗?这个事实有什么好处吗?我们在浪费一些记忆吗?这是否提供了在函数中返回有价值数据的方法?在发生某些意外行为时,将它用作返回不同值的方法是否正确?
BOOL myFunction(int argument)
{
BOOL result = YES; //The function generates the result
if (someError == YES) {
return 5;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我们在浪费一些记忆吗?
不,因为你不能得到一个小于a的变量char:它总是一个字节.您可以在一个单词中打包表示布尔标志的多个位,但您必须手动执行 - 使用位移位,使用位字段等.
这是否提供了在函数中返回有价值数据的方法?
不是真的:你所做的是一个hack,虽然5肯定会通过系统进入调用者,并且会被解释为YES"普通" if语句,例如
if (myFunction(123)) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果像这样使用它会失败:
if (myFunction(123) == YES) { // 5 != YES
...
}
Run Code Online (Sandbox Code Playgroud)
在发生某些意外行为时,将它用作返回不同值的方法是否正确?
从可读性的角度来看总是不正确的; 就"做你想做的事"而言,你的里程可能会有所不同,具体取决于你的功能使用方式.
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |