目 錄
第一部分 Objective-C 簡介
第1 章 Objective-C 簡介 2
1.1 使用Xcode 進行開發 3
1.1.1 新建項目 3
1.1.2 項目文件 5
1.1.3 添加源碼文件 6
1.1.4 主Xcode 窗口 7
1.2 理解編譯過程 9
1.2.1 編碼 9
1.2.2 源碼、編譯代碼和可執行文件 11
1.2.3 查看應用包 11
1.2.4 編譯設置 13
1.3 使用Xcode 靜態分析器 17
1.4 Objective-C 運行時 20
1.5 小結 20
第2 章 基本語法 21
2.1 使用語句和錶達式 23
2.1.1 聲明變量 23
2.1.2 使用注釋 25
2.1.3 標量類型 25
2.1.4 使用特殊變量修飾符 26
2.1.5 結構體 28
2.1.6 使用類型定義 29
2.1.7 使用enum 30
2.1.8 指針 31
2.1.9 使用運算符 35
2.1.10 三目運算符 37
2.2 使用函數 37
2.2.1 函數 37
2.2.2 定義函數 39
2.2.3 實現與接口 41
2.2.4 鏈接實現文件 42
2.3 控製程序流 43
2.3.1 使用條件語句 44
2.3.2 使用循環語句 47
2.4 活學活用 50
2.5 小結 53
第3 章 添加對象 54
3.1 對象 54
3.1.1 創建類 58
3.1.2 聲明對象 64
3.1.3 調用對象方法 65
3.2 使用屬性 66
3.2.1 狀態和行為的區彆 66
3.2.2 使用點標記 71
3.3 應用對象 72
3.3.1 創建員工對象 72
3.3.2 創建經理類 75
3.3.3 在HR 主函數中關聯不同的類 77
3.4 小結 78
第4 章 Objective-C 內存管理 79
4.1 使用引用計數 79
4.1.1 內存管理規則 81
4.1.2 使用自動釋放 82
4.1.3 對象內部的內存 85
4.2 使用垃圾迴收 88
4.2.1 垃圾迴收器 88
4.2.2 為項目配置垃圾迴收 90
4.2.3 在垃圾迴收項目中使用框架 91
4.3 關鍵的垃圾迴收模式 92
4.3.1 管理有限的資源 92
4.3.2 編寫支持垃圾迴收的基礎應用 94
4.3.3 處理nib 文件中的對象 94
4.3.4 強製垃圾迴收 95
4.3.5 處理空指針和垃圾迴收 95
4.3.6 使用垃圾迴收的麵嚮對象接口 96
4.4 項目使用的內存管理模型 97
4.5 小結 97
第二部分 更多特性
第5 章 代碼塊 100
5.1 瞭解代碼塊 100
5.1.1 聲明代碼塊 100
5.1.2 使用代碼塊 102
5.2 瞭解重要的代碼塊作用域 103
5.2.1 管理代碼塊內存 104
5.2.2 通過typedef 提高代碼塊的可讀性 105
5.3 在綫程中使用代碼塊 106
5.3.1 使用GCD 106
5.3.2 使用GCD 在綫程中調度代碼塊 106
5.4 通用的代碼塊設計模式 107
5.4.1 將代碼塊作為映射 107
5.4.2 在標準API 中使用代碼塊 108
5.5 在易並行任務中應用代碼塊 109
5.5.1 創建項目 109
5.5.2 在數組中使用代碼塊過濾素數 111
5.5.3 使用GCD 114
5.6 小結 116
第6 章 鍵值編碼和鍵值觀察 117
6.1 通過鍵值編碼訪問對象屬性 117
6.1.1 鍵路徑 119
6.1.2 編寫符閤KVC 標準的存取器方法 121
6.1.3 在數組中使用KVC 123
6.1.4 在結構體和標量中使用KVC 127
6.1.5 查找對象特性 128
6.2 觀察對符閤KVC 標準的值的修改 128
6.2.1 使用KVO 129
6.2.2 注冊成為觀察者 129
6.2.3 定義KVO 的迴調 130
6.2.4 移除觀察者 131
6.2.5 實現手動通知 132
6.2.6 使用KVO 的風險 133
6.3 應用鍵值觀察 133
6.4 小結 136
第7 章 使用協議 137
7.1 優先使用組閤而不是繼承 137
7.1.1 瞭解為什麼不需要(或不想要)多繼承 139
7.1.2 理解協議如何解決問題 139
7.1.3 記錄期望彆人實現的接口 140
7.2 在對象中實現協議 141
7.2.1 聲明協議 141
7.2.2 聲明一個類實現瞭協議 143
7.2.3 聲明一個必須實現協議的對象 143
7.2.4 正式協議和非正式協議 144
7.2.5 確定一個對象是否實現瞭可選方法 144
7.2.6 避免協議循環依賴 146
7.3 協議使用示例 146
7.4 小結 147
第8 章 擴展現有類 148
8.1 使用第三方框架和類 148
8.2 使用類彆 149
8.2.1 聲明類彆 149
8.2.2 實現類彆方法 150
8.2.3 在頭文件中聲明類彆 150
8.2.4 使用類彆 150
8.2.5 通過類彆拆分功能 151
8.2.6 擴展類方法 151
8.2.7 分析類彆的局限性 153
8.2.8 通過類彆實現協議 153
8.2.9 瞭解在NSObject 上創建類彆的風險 154
8.3 通過匿名類彆擴展類 154
8.4 在現有類中關聯變量 155
8.5 小結 157
第9 章 編寫宏 158
9.1 迴顧編譯過程 158
9.2 定義宏 162
9.2.1 定義常量 163
9.2.2 通過編譯傳遞常量 163
9.2.3 在宏中使用變量 165
9.2.4 字符串化 165
9.2.5 使用條件判斷 167
9.2.6 使用內置宏 167
9.3 小結 167
第10 章 錯誤處理 168
10.1 錯誤分類 168
10.2 使用錯誤處理的不同機製 169
10.2.1 使用返迴碼 170
10.2.2 使用異常 171
10.2.3 使用NSError 176
10.3 小結 180
第三部分 使用 Foundation 框架
第11 章 瞭解框架之間如何配閤工作 182
11.1 瞭解Foundation 框架 182
11.2 在項目中使用框架 184
11.2.1 添加框架 184
11.2.2 包含頭文件 185
11.2.3 考慮垃圾迴收 185
11.3 小結 185
第12 章 使用字符串 186
12.1 瞭解字符串聲明語法 186
12.1.1 使用格式化字符串 188
12.1.2 使用其他NSString 方法 189
12.1.3 使用NSString 類彆 190
12.2 小結 190
第13 章 使用集閤 191
13.1 使用數組 191
13.1.1 使用字典 193
13.1.2 使用Set 集閤 195
13.1.3 認識可變性 196
13.2 瞭解集閤和內存管理 198
13.3 遍曆 200
13.4 嚮元素發送消息 201
13.5 排序和過濾 201
13.6 在集閤中使用代碼塊 203
13.7 小結 204
第14 章 使用NSValue、NSNumber和NSData 205
14.1 使用NSValue 和NSNumber 206
14.1.1 通過NSValue 包裝任意數據類型 206
14.1.2 通過NSNumber 包裝數字 207
14.1.3 通過NSDecimalNumber進行算術運算 207
14.2 使用NSData 和NSMutableData 208
14.2.1 創建NSData 對象 208
14.2.2 訪問NSData 對象中的生數據 209
14.3 小結 209
第15 章 處理時間和日期 210
構建日期 211
使用時間間隔 211
日期比較 211
使用NSCalender 212
使用時區 213
15.1 使用NSDateFormatter 214
15.2 小結 214
第四部分 高級主題
第16 章 通過多個綫程實現多處理 216
16.1 同步代碼 217
16.1.1 使用鎖 217
16.1.2 使用@synchronize 關鍵字 219
16.1.3 理解原子性 220
16.2 創建NSTread 221
16.2.1 創建綫程 221
16.2.2 控製運行的綫程 221
16.2.3 訪問主綫程 222
16.2.4 通過執行選擇器跨綫程 223
16.3 使用NSOperation 和NSOperationQueue 223
16.3.1 創建操作 224
16.3.2 將操作加入到隊列 225
16.3.3 控製隊列參數 225
16.3.4 使用不同的操作 226
16.4 小結 227
第17 章 Objective-C 設計模式 228
17.1 識彆解決方案中的模式 228
17.2 用Objective-C 描述設計模式 229
17.2.1 使用單例 229
17.2.2 委托責任 233
17.2.3 將變化通知給多個對象 234
17.3 小結 237
第18 章 利用NSCoder 讀寫數據 238
在對象上實現NSCoding 協議 238
對象編碼 238
基本類型編碼 240
使用對象圖 240
使用其他類型的數據 241
解碼對象 242
18.1 使用NSArchiver 和NSUnarchiver 243
18.2 處理存檔文件格式和遺留數據 244
18.3 小結 244
第19 章 在其他平颱上使用Objective-C 245
19.1 使用GNUstep 245
19.1.1 使用Cocotron 247
19.1.2 使用其他開源庫 248
19.2 展望未來 248
19.3 小結 249
· · · · · · (
收起)