![](/img/trans.png)
[英]Is there a difference between YES/NO,TRUE/FALSE and true/false in objective-c?
[英]What is the difference between @YES/@NO and YES/NO?
在Objective-c中, @YES
YES
/ @NO
和YES
/ NO
之間有什么區別? 每種都使用什么類型?
@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中),例如add或multiply,首先你需要使用如下方法回到原始值: - integerValue , -boolValue , -floatValue等
您可能已經看過它,因為基礎集合類型僅適用於對象,因此如果您需要在NSArray
放置一系列bool,則必須將其轉換為對象。
@ YES / @ NO是NSNumber
類型,在使用Foundation對象時使用。例如
NSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject:@YES];//true [array addObject:YES];//Wrong
是/否是BOOLs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.