簡體   English   中英

@ YES / @ NO和YES / NO有什么區別?

[英]What is the difference between @YES/@NO and YES/NO?

在Objective-c中, @YES YES / @NOYES / NO之間有什么區別? 每種都使用什么類型?

@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

YESNO分別與truefalse10相同,您可以使用10而不是YESNO ,但就可讀性而言, YESNO將(應該)肯定是首選。

不同之處在於,通過使用@您將創建一個NSNumber實例,從而創建一個對象。 YesNo只是原始布爾值而不是對象。

@是文字的一種快捷方式來創建一個對象,你也可以在字符串@"something" ,字典@{"key": object} ,數組: @[object,...]和數字: @0,@1...@345或表達式@(3*2)

重要的是要明白,當你有一個像NSNumber這樣的對象時,你不能進行基本的數學運算(在obj-c中),例如add或multiply,首先你需要使用如下方法回到原始值: - integerValue-boolValue-floatValue

您可能已經看過它,因為基礎集合類型僅適用於對象,因此如果您需要在NSArray放置一系列bool,則必須將其轉換為對象。

  1. @ YES / @ NO是NSNumber類型,在使用Foundation對象時使用。例如

     NSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject:@YES];//true [array addObject:YES];//Wrong 
  2. 是/否是BOOLs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM