似乎在iOS中我有许多似乎适合布尔值的选项:
YES
NO
TRUE
FALSE
true
false
Run Code Online (Sandbox Code Playgroud)
我应该使用哪些?在这种特殊情况下,我躲在一个标签,所以我应该设定hidden属性YES,TRUE或true?
das*_*ght 13
简短的回答:你应该更喜欢YES和NO设置类型的基础属性BOOL.
对于长期答案,让我们首先看看这些常量定义在哪里:
true和false来自stdbool.h; 他们是#define-d as 1和0TRUE和FALSE来自CFBase.h; 他们是#define-d as 1和0YES并且NO是从NSObjCRuntime.h.这是signed char被typedef-ed为BOOL,它的两个值#define作为-d ((BOOL)1)和((BOOL)0)或__objc_yes/ __objc_no如果objc_bool被支持.基础课统一使用BOOL,这是一种typedef对signed char,来表示其布尔属性.由于前两对转换为int常量,因此使用它们可能会产生警告,但无论如何它都可能正常工作.在YES和NO常量,然而,在你的编译器最兼容的方式定义,无论它的版本.因此,我建议您在整个代码中使用YES并NO始终如一.
实际上两者之间没有区别YES,TRUE而true那些都代表一个由1代表的真实状态.
并且NO,false,FALSE是表示由表示的假状态0.
您还可以使用:
BOOL aBool = 1;
Run Code Online (Sandbox Code Playgroud)
这相当于BOOL aBool = true;和BOOL aBool = TRUE;和 BOOL aBool = YES;
但:
BOOL bBool = 7;
if (bBool)
{
NSLog(@"bBool is YES!\n");
}
if (bBool != YES) {
NSLog("bBool is not YES!\n");
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
b is YES!
b is not YES!
Run Code Online (Sandbox Code Playgroud)
这是因为当BOOL类型的值是除1以外的非零值时,与YES的直接比较将失败.
这是一篇很好的文章给你.
| 归档时间: |
|
| 查看次数: |
12189 次 |
| 最近记录: |