Objective-C 快速導覽 - 字面常數




Objective-C 有以下的基本資料型態 (basic data type) ,相關字面常數 (literal) 如範例

資料型態種類關鍵字字面常數範例
字元char'a', '\n'
整數short int
整數unsigned short int
整數int10, -11, 0xFF3D, 0375
整數unsigned int10u, 100U,0XFFu
整數long int10l, -100L, 0xffffL
整數unsigned long int10UL, 100ul, 0xfffful
整數long long int10LL, 0xffffll
整數unsigned long long int10ULL, 0xffffull
浮點數float10.1f
浮點數double10.1
浮點數long double10.1l
任何型態的物件idnil


nil 是一種特別的值,代表一個空的指標 (pointer) ,當任何物件 (object) 變數 (variable) 指向 nil 的時候,就表示原本的物件失去連結的指標了。


除了基本資料型態外,雙引號圍起來的內容為字串 (string) ,基本上字串屬於字元陣列 (array)
char *demo = "Hello world!";


雙引號若加上前綴 @ 就是 NSString 的字面常數
NSString *demo = @"Hello world!";


陣列是源自 C 語言的衍生資料型態之一,字元陣列也就是字串由於很常用,因此有字面常數的形式, NSString 則是 Cocoa 中的字串物件。


Clang 3.1 以後新增一些其他的字面常數,例如
// [NSNumber numberWithChar:'Z']
NSNumber *theLetterZ = @'Z';

// [NSNumber numberWithInt:42]
NSNumber *fortyTwo = @42;   
// [NSNumber numberWithUnsignedInt:42U]          
NSNumber *fortyTwoUnsigned = @42U;
// [NSNumber numberWithLong:42L]    
NSNumber *fortyTwoLong = @42L;  
// [NSNumber numberWithLongLong:42LL]      
NSNumber *fortyTwoLongLong = @42LL;   

// [NSNumber numberWithFloat:3.141592654F]
NSNumber *piFloat = @3.141592654F;
// [NSNumber numberWithDouble:3.1415926535]    
NSNumber *piDouble = @3.1415926535;   

// [NSNumber numberWithBool:YES]
NSNumber *yesNumber = @YES; 
// [NSNumber numberWithBool:NO]          
NSNumber *noNumber = @NO;             

// [NSNumber numberWithBool:(BOOL)true]
NSNumber *trueNumber = @true;  
// [NSNumber numberWithBool:(BOOL)false]       
NSNumber *falseNumber = @false;


另外有
// NSArray 物件的字面常數
NSArray *array = @[ @"Hello", NSApp, [NSNumber numberWithInt:42] ];

// NSDictionary 物件的字面常數
NSDictionary *dictionary = @{
    @"name" : NSUserName(),
    @"date" : [NSDate date],
    @"processInfo" : [NSProcessInfo processInfo]
};


大體上 Cocoa 物件的字面常數都有加上 @ 前綴。


中英文術語對照
基本資料型態basic data type
字面常數literal
指標pointer
物件object
變數variable
字串string
陣列array


您可以繼續參考
基本概念
標記
基本資料型態與指標


相關目錄
Objective-C 快速導覽
Objective-C 教材
首頁



參考資料
Programming with Objective-C: About Objective-C
Programming with Objective-C: Working with Objects
http://clang.llvm.org/docs/ObjectiveCLiterals.html

沒有留言: