作者序
Objective-C 語言從1980 年誕生到現在, 已有三十多年了。這期間,
Objective-C 語言以其高效性和安全性的特點在 Mac OS 中經久不衰。由於Objective-C 繼承了C 語言的一些特點,但同時又擁有自己的特點,所以在Mac OS 中獲得廣泛應用。
本書特色
1. 簡單易懂
本書最大的特點就是通篇採用圖片說明,將傳統的文字說明轉為各種形式的圖形圖表,大幅地提升讀者的閱讀興趣,讓讀者在潛移默化中掌握Objective-C語言的開發精髓。
2. 說明由淺入深,循序漸進,適合初學者
本書從Objective-C 的基礎開始說明,適合初學的讀者閱讀。
本書內容及系統結構
第一篇 基礎篇(第1 ∼ 5 章)
本篇主要內容包含:Objective-C 語言的發展、Objective-C 語言的開發環境及開發工具的安裝過程、第一個Objective-C 語言程式和圖形介面程式的執行、資料類型、敘述、程式控制結構、函數等。透過本篇的學習,讀者可以掌握使用開發工具撰寫簡單的程式並執行。
第二篇 Objective-C 物件導向篇(第6 ∼ 8 章)
本篇主要內容包含:類別和物件、繼承和多形、分類和協定等。透過本篇的學習,讀者可以掌握物件導向程式設計的核心技術與應用。
第三篇 Objective-C 技術篇(第9 ∼ 16 章)
本篇主要內容包含:記憶體管理、Foundation 架構的基本架構、檔案和目錄的處理、編譯前置處理、繼承和執行緒、歸檔、錯誤處理、時間日期處理等。透過本篇的學習,讀者可以掌握Objective-C 的基礎技術。
第四篇 iPhone 開發入門篇(第17 章)
本篇主要內容包含:iPhone 的發展和特點、使用Interface Builder、撰寫第一個“Hello World !”程式等。透過本篇的學習,讀者可以掌握iPhone 的開發過程,為後續的iPhone 開發做好準備。
本書適合讀者群
Objective-C 初學者
繁體中文出版說明
本書原文為簡體中文( 作者為大陸籍),為保持原書之寫作風格及內容
完整,本書在書中附圖部分有部分用語及原作者程式截圖延用簡體中文原
圖。
本書原始程式碼下載在本公司官網http://www.topteam.cc,亦保留原書簡體中文之程式碼。讀者若執行繁體中文程式碼時發現有問題( 轉換格式),可直接下載簡體的原文程式碼執行。
Objective-C 語言從1980 年誕生到現在, 已有三十多年了。這期間,
Objective-C 語言以其高效性和安全性的特點在 Mac OS 中經久不衰。由於Objective-C 繼承了C 語言的一些特點,但同時又擁有自己的特點,所以在Mac OS 中獲得廣泛應用。
本書特色
1. 簡單易懂
本書最大的特點就是通篇採用圖片說明,將傳統的文字說明轉為各種形式的圖形圖表,大幅地提升讀者的閱讀興趣,讓讀者在潛移默化中掌握Objective-C語言的開發精髓。
2. 說明由淺入深,循序漸進,適合初學者
本書從Objective-C 的基礎開始說明,適合初學的讀者閱讀。
本書內容及系統結...
目錄
前言
第1 篇基礎篇
Chapter 01 第一個Objective-C 程式
1.1 Objective-C 開發概述
1.1.1 Objective-C 的發展史
1.1.2 Objective-C 的特點
1.1.3 開發環境(Software Development Environment,SDE)
1.2 "Hello World!" 程式
1.2.1 建立Hello Objective-C 專案
1.2.2 編譯、連結及執行
1.3 Objective-C 程式認識
1.3.1 檢視原始檔案
1.3.2 Objective-C 程式的結構
1.3.3 註釋
1.3.4 識別符號
1.4 小結
1.5 習題
Chapter 02 資料類型
2.1 數值
2.1.1 二進位
2.1.2 十進位
2.1.3 八進位
2.1.4 十六進位
2.1.5 各進位之間的轉換
2.2 資料類型
2.2.1 整數類型
2.2.2 實類型資料
2.2.3 字元
2.2.4 資料類型的輸出
2.2.5 Objective-C 特有的資料類型
2.3 變數和常數
2.3.1 變數
2.3.2 常數
2.4 小結
2.5 習題
Chapter 03 敘述
3.1 敘述的組成
3.2 運算子及運算式
3.2.1 算術運算子及運算式
3.2.2 自動增加自減運算子
3.2.3 位元運算符號
3.2.4 設定運算子及運算式
3.2.5 關係運算子及運算式
3.2.6 條件運算子
3.2.7 布林邏輯運算子及運算式
3.2.8 逗點運算子及運算式
3.2.9 求位元組數運算子
3.2.10 特殊的運算子
3.2.11 運算子的優先順序
3.3 類型轉換
3.3.1 自動轉換
3.3.2 強制類型轉換
3.4 敘述區塊
3.4.1 敘述區塊的結構
3.4.2 作用域
3.5 小結
3.6 習題
Chapter 04 程式控制結構
4.1 順序結構
4.2 選擇結構
4.2.1 條件陳述式的組成
4.2.2 if 敘述
4.2.3 if...else 敘述
4.2.4 if...else...if 敘述
4.2.5 三種if 敘述的注意事項
4.2.6 if 敘述的巢狀結構
4.2.7 switch 敘述
4.3 循環結構
4.3.1 while 敘述
4.3.2 for 敘述
4.3.3 do...while 敘述
4.3.4 三種循環敘述的比較
4.4 轉折敘述
4.4.1 break 敘述
4.4.2 continue
4.4.3 break 和continue 的比較
4.4.4 return 敘述
4.5 小結
4.6 習題
Chapter 05 函數
5.1 函數簡介
5.2 函數的使用
5.2.1 函數的宣告
5.2.2 函數的定義和呼叫
5.2.3 函數使用中的問題
5.2.4 空函數
5.3 函數的參數
5.3.1 參數
5.3.2 有參函數的定義和呼叫
5.3.3 參數的注意事項
5.3.4 函數的傳遞方式
5.4 函數的傳回值
5.4.1 傳回某一資料類型的值
5.4.2 無傳回值
5.5 函數的巢狀結構和遞迴
5.5.1 函數的巢狀結構
5.5.2 函數的遞迴
5.6 小結
5.7 習題
第2篇 Objective-C 物件導向篇
Chapter 06 物件導向程式設計
6.1 類別和物件
6.1.1 類別的宣告和定義
6.1.2 產生實體物件
6.2 執行個體變數
6.2.1 執行個體變數的定義
6.2.2 執行個體變數的使用
6.2.3 執行個體變數、全域變數和區域變數的區別
6.2.4 變數的儲存類別
6.3 方法
6.3.1 方法的宣告
6.3.2 方法的實現
6.3.3 物件方法的使用
6.3.4 類別方法的使用
6.3.5 方法的參數
6.4 屬性
6.4.1 屬性的宣告和定義
6.4.2 帶參屬性
6.4.3 帶參屬性—setter/getter 方法(assign/retain/copy)
6.4.4 帶參屬性——讀寫屬性
6.4.5 帶參屬性——最小修飾
6.5 小結
6.6 習題
Chapter 07 深入物件導向的程式設計
7.1 繼承
7.1.1 繼承的實現
7.1.2 執行個體變數的繼承
7.1.3 方法的繼承
7.2 存取限定詞
7.2.1 @public
7.2.2 @protected
7.2.3 @private
7.2.4 存取限定詞的區別
7.3 方法重新定義
7.3.1 方法重新定義的形式
7.3.2 super
7.4 方法多載
7.5 多層繼承
7.6 多形
7.6.1 多形的形式
7.6.2 方法的重新定義實現多形
7.6.3 方法的多載實現多形
7.7 動態類型和動態繫結
7.7.1 動態類型id
7.7.2 動態繫結
7.8 小結
7.9 習題
Chapter 08 分類和協定
8.1 分類
8.1.1 分類的宣告
8.1.2 分類的定義
8.1.3 分類的使用
8.1.4 分類的建立
8.1.5 分類使用的注意點
8.2 協定
8.2.1 協定的定義
8.2.2 協定的建立
8.2.3 協定在類別中的宣告
8.2.4 所用協定宣告方法
8.2.5 關鍵字
8.2.6 多個協定的使用
8.2.7 在協定中使用協定
8.2.8 判斷協定實現的方法
8.2.9 協定的分類
8.3 小結
8.4 習題
第3篇 Objective-C 技術篇
Chapter 09 記憶體管理
9.1 記憶體管理的基礎
9.1.1 申請記憶體(alloc)
9.1.2 釋放記憶體(dealloc)
9.2 參考計數
9.2.1 參考計數和字串
9.2.2 參考計數和執行個體變數
9.3 自動釋放池
9.3.1 自動釋放池
9.3.2 建立多個自動釋放池
9.3.3 參考計數和自動釋放池
9.4 記憶體管理規則及記憶體洩漏
9.4.1 記憶體管理規則
9.4.2 記憶體洩漏
9.5 垃圾回收
9.6 小結
9.7 習題
Chapter 10 Foundation 架構的基本物件
10.1 數字物件
10.1.1 數字物件的介紹
10.1.2 數字物件的使用
10.2 字串物件
10.2.1 字串和字元的區別
10.2.2 不可修改的字串
10.3 陣列物件
10.3.1 陣列的定義
10.3.2 陣列的宣告
10.3.3 陣列的參考
10.3.4 二維陣列的宣告和定義
10.3.5 二維陣列初始化的方法
10.3.6 二維陣列的參考
10.3.7 字元陣列的含義
10.3.8 字元陣列初始化
10.3.9 字元陣列的參考
10.3.10 不可修改的陣列
10.3.11 可修改的陣列
10.4 字典物件
10.4.1 不可修改的字典
10.4.2 可修改的字典
10.5 集合物件
10.5.1 不可修改的集合
10.5.2 可修改的集合
10.6 小結
10.7 習題
Chapter 11 檔案和目錄處理
11.1 檔案的操作
11.1.1 建立檔案
11.1.2 檔案的使用
11.1.3 對檔案資料的操作
11.1.4 檔案的讀寫
11.2 目錄的操作
11.2.1 目錄的基本操作方法
11.2.2 目錄的顯示
11.2.3 臨時目錄
11.2.4 路徑
11.3 小結
11.4 習題
Chapter 12 編譯前置處理
12.1 巨集定義
12.1.1 不帶參巨集定義
12.1.2 帶參巨集
12.1.3 使用巨集的注意點
12.1.4 巨集的取消
12.2 標頭檔案
12.3 條件編譯
12.3.1 #ifdef
12.3.2 #ifndef
12.3.3 #if
12.3.4 編譯前置處理歸納
12.4 小結
12.5 習題
Chapter 13 處理程序和執行緒
13.1 處理程序
13.1.1 建立處理程序2
13.1.2 處理程序的使用
13.1.3 處理程序方法歸納
13.2 執行緒
13.2.1 使用NSThread 建立執行緒
13.2.2 啟動執行緒
13.2.3 存取主執行緒
13.3 互斥鎖
13.3.1 NSLock
13.3.2 @synchronized
13.4 處理程序和執行緒的區別
13.5 小結
13.6 習題
Chapter14 歸檔
14.1 XML 屬性清單
14.1.1 使用XML 進行資料儲存
14.1.2 使用XML 進行資料讀取
14.2 NSKeyedArchiver
14.2.1 NSKeyedArchive 的資料儲存
14.2.2 NSKeyedArchive 的資料讀取
14.3 編碼和解碼方法
14.3.1 直接進行歸檔
14.3.2 編碼方法
14.3.3 解碼方法
14.4 儲存多個物件到一個檔案
14.5 使用歸檔程式複製物件
14.6 小結
14.7 習題
Chapter15 錯誤處理
15.1 錯誤的分類
15.2 使用傳回值
15.3 使用例外處理
15.3.1 例外處理的使用
15.3.2 捕捉不同類型的例外
15.3.3 使用例外的注意點
15.3.4 拋出例外
15.4 使用NSError
15.5 小結
15.6 習題
Chapter16 時間日期處理
16.1 NSDate
16.1.1 建立NSDate
16.1.2 取得目前的日期
16.1.3 取得昨天的日期
16.1.4 日期的比較
16.1.5 兩個日期的時間差
16.1.6 時間間隔
16.2 使用NSCalendar
16.2.1 建立一個指定日期的NSDate 物件
16.2.2 日期在不同日曆間的轉換
16.2.3 取得日期整體年月日
16.3 字串和日期的相互轉化
16.3.1 將日期轉化為字串
16.3.2 將字串轉化為日期
16.4 時區
16.5 小結
16.6 習題
第4篇 iPhone 開發入門篇
Chapter17 iPhone 入門
17.1 撰寫iPhone 應用程式和其他程式的不同
17.2 第一個"Hello World!" 程式
17.2.1 建立Hello World 專案
17.2.2 iPhone Simulator 的簡介
17.2.3 使用Interface Builder
17.2.4 撰寫第一個"Hello World" 程式
17.3 小結
前言
第1 篇基礎篇
Chapter 01 第一個Objective-C 程式
1.1 Objective-C 開發概述
1.1.1 Objective-C 的發展史
1.1.2 Objective-C 的特點
1.1.3 開發環境(Software Development Environment,SDE)
1.2 "Hello World!" 程式
1.2.1 建立Hello Objective-C 專案
1.2.2 編譯、連結及執行
1.3 Objective-C 程式認識
1.3.1 檢視原始檔案
1.3.2 Objective-C 程式的結構
1.3.3 註釋
1.3.4 識別符號
1.4 小結
1.5 習題
Chapter 02 資料類型
2.1 數值
2.1.1 二進位
2.1.2 十進位
2.1.3 八進位
2.1.4 十六進位
2.1.5 各進位之間...