Objective-C 入門指南 - 資本資料型態、物件與指標

變數 (variable) 為程式語言中自行定義的識別字 (identifier) , Objective-C 的變數不是儲存基本資料型態 (basic data type) 的數值 (value) 就是指標 (pointer)




Objective-C 的資本資料型態如下列表
型態類型關鍵字範圍
字元(整數)charASCII 字元
整數short int-32768~32767
整數unsigned short int0~65535
整數int-2147483648~2147483647
整數unsigned int0~4294967295
整數long int-2147483648~2147483647
整數unsigned long int0~4294967295
整數long long int-9223372036854775808 ~ 9223372036854775807
整數unsigned long long int0~18446744073709551615
浮點數float依據 IEEE 754 標準
浮點數double依據 IEEE 754 標準
浮點數long double依據 IEEE 754 標準
布林值(整數)BOOLYES, NO, signed char
通用型態id任何型態的物件或常數


基本資料型態分為整數與浮點數兩大類,字元、布林值實際上屬於整數,通用型態 id 比較特別,它可以是任何型態的物件或常數。


使用變數前須先宣告所屬型態,然後可以運用指派運算子將常數 (constant) 指派給變數,常數也就是程式中直接寫出來的數值,以下表示布林值 (Boolean value) 、字元 (character) 、整數 (integer) 與浮點數 (floating-point number) 的字面常數
BOOL a = YES;
char b = '2';
int c = 2;
double  d = 2.0;


整數 0 或常數 NO 為布林真假值中的「假」,或稱之 false ,其他非 0 的值或常數 YES 都會被當成布林真假值中的「真」,或稱之 true


使用變數前,都得先宣告 (declare) 要使用的識別字,宣告形如上例,寫完型態名稱後接空格,然後接識別字名稱
TypeNname identifier;


通常基本資料型態所需要用到的記憶體空間有限,因此編譯器 (compiler) 會直接分配基本資料型態的記憶體空間,變數直接指向該記憶體空間。如果變數指向的是物件 (object) ,由於物件需要的記憶體空間相當龐大(相較基本資型態來講),因此物件變數就得宣告成指標,例如 demo.m 中
// 建立自動釋放池物件, alloc 為配置記憶體區域, init 為初始化物件
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


pool 為指向 NSAutoreleasePool 型態物件的指標。另外 s1s2s3 分別是指向不同 NSString 型態的字串物件
// 建立三個 NSString 字串物件
NSString *s1 = @"\n\n這是 Objective-C 的第一個程式...\n";
NSString *s2 = @"使用 Foundation.h 中的 NSLog() 來輸出...\n";
NSString *s3 = @"程式執行結束...\n\n";


宣告變數時使用 * 於識別字左側表示該變數為指標,有沒有空格或插入多個空格都沒關係。宣告指標變數的形式如下
TypeNname *pointer;


建立物件需要先分配記憶體空間,然後將物件初始化。由於 Objective-C 的所有物件都已繼承 (inherit) 或須自行設定繼承自 NSObject , NSObject 為 Objective-C 所有物件之母,因此可使用 NSObject 的 alloc 方法分配記憶體空間,接著利用 NSObject 的 init 初始化物件,或自行設計初始化方法。


繼承 (inheritance) 是物件導向程式語言 (object-oriented progamming language) 中的一項重要特性,使物件的模板,也就是類別 (class) 可以衍生自其他類別,子類別 (subclass) 可以擁有父類別 (superclass) 的特性。


「繼承」是程式語言社群習慣用詞,英文動詞原文為 inherit ,意思泛指從什麼得到什麼,所以生物學中的「遺傳」也是用這個詞。實際上物件導向程式設計的繼承機制相當複雜,然而中文的繼承常用於某物不再,另物將起的意思,譬如我繼承某某的精神,雖然某某不見得已死,可是將來要付出努力的卻是我而非某某,因而這裡的意思中文用「遺傳」比較恰當,子代會從親代遺傳性狀,子代與親代也會並存一段時間,這就沒有某物不再的意含了。


這是我們稍後設計類別所需要有的的基本認識,現在,我們來看看變數命名規則吧!


中英文術語對照
變數variable
識別字identifier
基本資料型態basic data type
數值value
指標pointer
常數constant
布林值Boolean value
字元character
整數integer
浮點數floating-point number
宣告declare
編譯器compiler
物件object
繼承inherit, inheritance
物件導向程式語言object-oriented progamming language
類別class
子類別subclass
父類別superclass


您可以繼續參考
基礎篇


相關目錄
Objective-C 入門指南
Objective-C 教材
首頁



參考資料
Learning Objective-C: A Primer
The Objective-C Programming Language
Cocoa Fundamentals Guide
Coding Guidelines for Cocoa
Advanced Memory Management Programming Guide
Archives and Serializations Programming Guide

沒有留言: