@ YES / @ NO和YES / NO有什么区别?

时间:2015-06-03 05:38:35

标签: objective-c boolean objective-c-literals

在Objective-c中,@YES / @NOYES / NO之间的区别是什么?每种都使用什么类型?

3 个答案:

答案 0 :(得分:39)

@YES[NSNumber numberWithBool:YES]

的缩写形式

&安培;

@NO[NSNumber numberWithBool:NO]

的缩写形式

如果我们写

if(@NO)
   some statement;

上面的if语句将执行,因为上面的语句将是

if([NSNumber numberWithBool:NO] != nil)

并且它不等于nil所以它将true,因此将通过。

YESNO只是BOOL's,而且定义为 -

#define YES             (BOOL)1

#define NO              (BOOL)0

YES& NOtrue相同false1&分别为0,您可以使用1& 0代替YES& NO,但就可读性而言YES& NO将(应该)绝对是首选。

答案 1 :(得分:14)

不同之处在于使用@创建了一个NSNumber实例,因此是一个对象。 YesNo只是原始布尔值而不是对象。

@是一种文字的快捷方式,可以在字符串@"something",词典@{"key": object},数组@[object,...]和数字中创建一个对象:@0,@1...@345 {1}}或表达式@(3*2)

重要的是要明白,当你有NSNumber这样的对象时,你不能进行基本的数学运算(在obj-c中),例如加法或乘法,首先你需要回到原始值使用以下方法: - integerValue -boolValue -floatValue 等。

您可能已经看过它,因为基础集合类型仅适用于对象,因此如果您需要在NSArray中放置一系列bool,则必须将其转换为对象。

答案 2 :(得分:4)

  1. @ YES / @ NO是NSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject:@YES];//true [array addObject:YES];//Wrong 的类型,在使用Foundation对象时使用。例如

    BOOLs
  2. 是/否是Code State Value AK Alaska 201254 AL Alabama 52020 AR Arkansas 545041 AZ Arizona 630.63 CA California 623520