第1章 入門 1
1.1 簡介
1.1.1 蘋果公司的Objective-C平颱 1
1.1.2 選擇Objective-C的原因 2
1.2 開發一個簡單的Objective-C程序 3
1.2.1 新建工程 3
1.2.2 編寫第一個Objective-C程序 7
1.3 小結 9
第2章 使用類 10
2.1 開發第一個類 10
2.1.1 嚮項目中添加一個類 10
2.1.2 編寫Atom類的接口 12
2.1.3 編寫實現Atom類的代碼 13
2.2 實例變量 15
2.2.1 設置訪問實例變量的方式 16
2.2.2 聲明實例變量 16
2.2.3 訪問實例變量 17
2.3 屬性 17
2.3.1 屬性聲明 17
2.3.2 屬性定義 18
2.3.3 由屬性支持的實例變量 19
2.3.4 訪問屬性 19
2.4 方法 20
2.4.1 語法 20
2.4.2 調用方法 21
2.5 協議 21
2.6 分類 24
2.7 小結 27
第3章 對象和消息傳遞 28
3.1 創建對象 28
3.1.1 初始化對象 29
3.1.2 延伸Elements工程 30
3.2 發送消息 35
3.3 消息轉發 36
3.3.1 轉發選項 37
3.3.2 嚮Hydrogen類添加快速轉發機製 3
3.4 小結 41
第4章 內存管理 43
4.1 程序的內存使用情況 43
4.2 Objective-C的內存模型 45
4.3 手動管理 45
4.3.1 對象引用和對象所有權 45
4.3.2 內存管理基本原則 45
4.3.3 使用MRR 48
4.4 使用自動引用計數 54
4.4.1 使用ARC的規則和約定 55
4.4.2 ARC的生命周期限定符 56
4.4.3 使用ARC 56
4.4.4 避免循環引用 60
4.5 小結 60
第5章 預處理器 62
5.1 概述 62
5.2 預處理器語言 63
5.2.1 指令 64
5.2.2 宏 71
5.3 小結 72
第6章 專傢級技巧:使用ARC 74
6.1 ARC和對象所有權 74
6.1.1 聲明對象的所有權 74
6.1.2 釋放對象的所有權 75
6.2 擴展訂單條目工程 76
6.3 將ARC與蘋果公司提供的框架和服務一同使用 82
6.4 Objective-C直接橋接 83
6.5 使用ARC橋接轉換 85
6.6 小結 89
第7章 運行時係統 90
7.1 動態功能 90
7.2 對象消息 90
7.2.1 選擇器 92
7.2.2 方法簽名 93
7.2.3 使用對象消息 94
7.3 動態類型 100
7.4 動態綁定 101
7.5 動態方法決議 102
7.6 動態加載 104
7.7 內省 105
7.8 小結 106
第8章 運行時係統的結構 107
8.1 運行時係統的組成部分 107
8.1.1 編譯器 107
8.1.2 運行時係統庫 112
8.2 與運行時係統交互 120
8.2.1 NSObject類的運行時方法 121
8.2.2 執行對象內省 121
8.3 小結 123
第9章 專傢級技巧:使用運行時係統API 125
9.1 使用可選包擴展程序 125
9.1.1 方法 125
9.1.2 步驟1:編寫基礎代碼 125
9.1.3 步驟2:創建一個可選包 128
9.1.4 步驟3:動態加載包 132
9.2 使用運行時係統API 138
9.2.1 定義方法的實現函數 140
9.2.2 創建並注冊類 140
9.2.3 創建類實例 141
9.2.4 以動態方式嚮類實例添加變量 141
9.3 創建動態代理 142
9.3.1 創建Invoker協議 143
9.3.2 編寫代理類 144
9.3.3 測試AspectProxy程序 147
9.4 小結 149
第10章 Foundation框架中的常用類 150
10.1 根類 150
10.1.1 NSObject協議 150
10.1.2 NSObject類 151
10.1.3 NSProxy類 153
10.2 字符串 153
10.2.1 NSString類 154
10.2.2 NSAttributedString類 157
10.2.3 NSString常量 157
10.2.4 格式化字符串 157
10.3 值對象 158
10.3.1 NSValue類 158
10.3.2 NSNumber類 158
10.3.3 NSDecimalNumber類 159
10.3.4 NSNumber常量 159
10.3.5 對日期和時間的支持 160
10.3.6 NSCache類 160
10.4 集閤 161
10.4.1 NSArray類 161
10.4.2 NSPointerArray類 162
10.4.3 NSDictionary類 162
10.4.4 NSMapTable類 163
10.4.5 NSSet類 163
10.4.6 NSCountedSet類 163
10.4.7 NSHashTable類 163
10.4.8 NSPointerFunctions類 164
10.5 XML處理類 164
10.5.1 XML的DTD處理類 164
10.5.2 基於樹形結構的XML處理類 164
10.5.3 事件驅動的XML處理類 165
10.6 謂詞類 165
10.7 小結 166
第11章 Foundation框架中的係統服務 167
11.1 網絡服務 167
11.1.1 NSHost類 167
11.1.2 Bonjour網絡服務 167
11.2 應用服務 168
11.3 正則錶達式和文本處理 168
11.4 文件係統實用程序 169
11.4.1 應用程序包 169
11.4.2 文件管理 170
11.4.3 數據流的輸入輸齣 170
11.4.4 元數據查詢 171
11.5 並發機製和綫程 171
11.5.1 綫程管理 171
11.5.2 並行操作 172
11.5.3 鎖定 173
11.5.4 計時器和運行循環 173
11.5.5 創建Bonjour網絡服務客戶端 174
11.6 URL處理 178
11.6.1 URL加載 178
11.6.2 緩存管理 180
11.6.3 使用URL加載API下載資源 180
11.6.4 身份認證和證書管理 185
11.6.5 Cookie管理 186
11.6.6 協議支持 186
11.7 進程間通信 186
11.7.1 通過信道通信 187
11.7.2 通過端口通信 187
11.7.3 端口注冊 187
11.8 小結 188
第12章 Foundation框架的專用服務 189
12.1 通知 189
12.2 歸檔和序列化 192
12.2.1 歸檔 192
12.2.2 屬性列錶序列化 193
12.2.3 歸檔對象圖 195
12.3 分布式對象 204
12.4 腳本 205
12.5 小結 205
第13章 Foundation框架函數和數據類型 206
13.1 Foundation框架函數 206
13.1.1 斷言 206
13.1.2 記錄日誌 209
13.1.3 包 209
13.1.4 十進製數值運算和字節排序 211
13.1.5 與運行時係統進行交互 214
13.1.6 文件路徑 214
13.1.7 幾何圖形 215
13.2 數據類型 216
13.3 常數 216
13.4 小結 216
第14章 專傢級技巧:錯誤處理 217
14.1 運行時錯誤情況 217
14.1.1 斷言 217
14.1.2 錯誤編碼 218
14.1.3 錯誤對象 218
14.1.4 異常 218
14.2 NSError類 218
14.2.1 使用錯誤對象 219
14.2.2 處理委托方法錯誤 221
14.2.3 通過間接方式創建錯誤對象 225
14.2.4 錯誤恢復 226
14.2.5 錯誤迴應對象 227
14.2.6 NSError編碼 227
14.3 異常處理 227
14.4 NSException類 228
14.4.1 異常和內存管理 229
14.4.2 執行異常處理 230
14.5 Foundation框架標準異常名稱 232
14.6 錯誤處理指導原則 233
14.7 小結 234
第15章 塊 235
15.1 塊的語法 235
15.2 塊就是閉包 239
15.2.1 詞匯範圍 239
15.2.2 可修改的__block變量 241
15.3 塊的內存管理 241
15.4 使用塊 243
15.4.1 使用塊為數組排序 243
15.4.2 使用塊加載URL 245
15.4.3 使用塊的並行編程方式 248
15.5 小結 251
第16章 Objective-C常量 252
16.1 常量 252
16.2 NSNumber常量 253
16.3 容器常量 254
16.3.1 NSArray常量 254
16.3.2 NSDictionary常量 255
16.4 錶達式常量 256
16.5 對象下標 257
16.5.1 NSArray對象的下標 257
16.5.2 NSDictionary對象的下標 258
16.6 自定義下標 259
16.7 使用自定義下標編輯寄存器值 260
16.8 小結 270
第17章 並發編程 272
17.1 並發編程的基本原則 272
17.1.1 並發處理的優勢 273
17.1.2 實現並發處理 274
17.2 並行處理帶來的挑戰 274
17.3 共享數據 275
17.4 消息傳遞 276
17.5 在Objective-C中實現並發編程 276
17.6 語言特性 277
17.7 消息傳遞 278
17.8 綫程 279
17.8.1 NSObject綫程 279
17.8.2 NSThread 280
17.8.3 綫程同步 281
17.9 使用綫程實現並發處理 284
17.10 操作和操作隊列 288
17.11 實現並發操作 291
17.12 使用操作隊列實現並發處理 295
17.13 Grand Central Dispatch 298
17.14 為並發編程選擇閤適的API 301
17.15 小結 301
第18章 鍵值編程 303
18.1 鍵值編碼 303
18.2 設計和實現KVC 306
18.2.1 鍵值編碼API 307
18.2.2 鍵值搜索模式 308
18.2.3 屬性訪問方法的命名約定 308
18.2.4 一對多屬性訪問方法命名約定 309
18.2.5 鍵值檢驗 310
18.2.6 鍵值編碼的集閤操作符 311
18.3 鍵值觀察 313
18.3.1 鍵值觀察和通知 314
18.3.2 鍵值觀察API 314
18.4 KVO的設計和實現 316
18.5 使用鍵值編程 316
18.6 小結 323
附錄A 語言元素 325
附錄B Xcode的配置功能 337
附錄C 使用LLDB 353
· · · · · · (
收起)