@YES
在 Objective-c 中/@NO
和YES
/有什么区别NO
?每种使用什么类型?
3 回答
@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
不同之处在于,通过使用@
您正在创建一个NSNumber
实例,因此是一个对象。Yes
并且No
只是原始布尔值而不是对象。
这@
是一种文字,一种创建对象的快捷方式,您也可以在字符串@"something"
、字典@{"key": object}
、数组:@[object,...]
和数字:@0,@1...@345
或表达式中使用它@(3*2)
。
重要的是要了解,当您有一个对象时,例如NSNumber
您不能进行基本的数学运算(在 obj-c 中),例如加法或乘法,首先您需要使用以下方法返回原始值:- integerValue,- boolValue,-floatValue等。
您可能已经看到它,因为基础集合类型仅适用于对象,因此如果您需要在 中放置一系列布尔值NSArray
,则必须将其转换为对象。
@YES/@NO 是类型
NSNumber
,用于对 Foundation 对象做某事时使用。例如NSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject:@YES];//true [array addObject:YES];//Wrong
是/否是
BOOLs