@YES/@NO 和 YES/NO 有什么区别?
What is the difference between @YES/@NO and YES/NO?
在Objective-c中@YES
/@NO
和YES
/NO
有什么区别?每个使用什么类型?
不同之处在于,通过使用 @
,您正在创建一个 NSNumber
实例,因此是一个对象。 Yes
和 No
只是原始布尔值而不是对象。
@
是一种创建对象的快捷方式,它也存在于字符串 @"something"
、字典 @{"key": object}
、数组:@[object,...]
和数字中: @0,@1...@345
或表达式 @(3*2)
.
理解这一点很重要,当你有一个像 NSNumber
这样的对象时,你不能进行基本的数学运算(在 obj-c 中),比如加法或乘法,首先你需要回到primitive 值使用如下方法:-integerValue、-boolValue、-floatValue等
你可能见过它,因为基础集合类型只适用于对象,所以如果你需要在 NSArray
中放入一系列布尔值,你必须将它转换为对象。
@YES/@NO 是 NSNumber
的类型,在使用 Foundation object.For 示例
时使用
NSMutableArray * array = [[NSMutableArray alloc] init];
[array addObject:@YES];//true
[array addObject:YES];//Wrong
YES/NO 是 BOOLs
@YES
是 [NSNumber numberWithBool:YES]
的缩写形式
&
@NO
是 [NSNumber numberWithBool:NO]
的缩写形式
如果我们写
if(@NO)
some statement;
上面的 if 语句将执行,因为上面的语句将是
if([NSNumber numberWithBool:NO] != nil)
它不等于 nil
所以它将是 true
因此会通过。
而 YES
和 NO
只是 BOOL's
并且它们被定义为 -
#define YES (BOOL)1
#define NO (BOOL)0
YES
& NO
分别与 true
& false
、1
& 0
相同,您可以使用 1
& 0
而不是 YES
& NO
,但就可读性而言,YES
& NO
绝对(应该)是首选。
在Objective-c中@YES
/@NO
和YES
/NO
有什么区别?每个使用什么类型?
不同之处在于,通过使用 @
,您正在创建一个 NSNumber
实例,因此是一个对象。 Yes
和 No
只是原始布尔值而不是对象。
@
是一种创建对象的快捷方式,它也存在于字符串 @"something"
、字典 @{"key": object}
、数组:@[object,...]
和数字中: @0,@1...@345
或表达式 @(3*2)
.
理解这一点很重要,当你有一个像 NSNumber
这样的对象时,你不能进行基本的数学运算(在 obj-c 中),比如加法或乘法,首先你需要回到primitive 值使用如下方法:-integerValue、-boolValue、-floatValue等
你可能见过它,因为基础集合类型只适用于对象,所以如果你需要在 NSArray
中放入一系列布尔值,你必须将它转换为对象。
@YES/@NO 是
时使用NSNumber
的类型,在使用 Foundation object.For 示例NSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject:@YES];//true [array addObject:YES];//Wrong
YES/NO 是
BOOLs
@YES
是 [NSNumber numberWithBool:YES]
&
@NO
是 [NSNumber numberWithBool:NO]
如果我们写
if(@NO)
some statement;
上面的 if 语句将执行,因为上面的语句将是
if([NSNumber numberWithBool:NO] != nil)
它不等于 nil
所以它将是 true
因此会通过。
而 YES
和 NO
只是 BOOL's
并且它们被定义为 -
#define YES (BOOL)1
#define NO (BOOL)0
YES
& NO
分别与 true
& false
、1
& 0
相同,您可以使用 1
& 0
而不是 YES
& NO
,但就可读性而言,YES
& NO
绝对(应该)是首选。