第1部分 入 門
第1章 讀者與本書 3
1.1 C語言和Objective-C語言 3
1.2 如何閱讀本書 4
1.3 程序員要走的道路 5
第2章 第一個程序 7
2.1 安裝蘋果開發者工具 7
2.2 Xcode入門 7
2.3 從哪裏開始編寫代碼 10
2.4 如何運行程序 13
2.5 程序是如何産生的 15
2.6 不要半途而廢 16
第2部分 如 何 編 程
第3章 變量與類型 21
3.1 類型 21
3.2 使用變量的程序 22
第4章 if和else 25
4.1 布爾變量 27
4.2 花括號的使用規則 27
4.3 else if 28
4.4 深入學習:條件運算符(三元運算符) 28
第5章 函數 31
5.1 應該在何時使用函數 31
5.2 如何編寫並使用函數 31
5.3 函數間是如何協同工作的 33
5.4 標準庫 34
5.5 局部變量、幀和棧 35
5.6 作用域 37
5.7 遞歸 38
5.8 通過調試器查看幀 40
5.9 返迴 42
5.10 全局變量與靜態變量 43
第6章 格式化字符串 45
6.1 使用格式說明符 46
6.2 轉義字符 46
第7章 數字 49
7.1 整數 49
7.2 浮點數 54
7.3 練習 55
第8章 循環 57
8.1 while循環 58
8.2 for循環 59
8.3 break 60
8.4 continue 61
8.5 do-while循環 62
第9章 地址與指針 67
9.1 獲取地址 67
9.2 用指針保存地址 68
9.3 通過地址訪問數據 69
9.4 不同類型的數據所占用的字節大小 70
9.5 NULL 71
9.6 指針聲明的代碼規範 72
第10章 通過引用傳遞 73
10.1 編寫通過引用傳遞參數的函數 74
10.2 不要對NULL取值 75
第11章 結構 77
第12章 堆 81
第3部分 Objective-C與Foundation
第13章 對象 87
13.1 對象 87
13.2 類 87
13.3 創建並使用對象 88
13.4 方法和消息 90
13.5 消息發送 90
13.6 詳解消息 91
13.7 類方法與實例方法 92
13.8 發送錯誤消息 93
13.9 大小寫很重要! 94
13.10 Objective-C語言命名習慣 95
13.11 術語小簡介 96
第14章 再談消息 97
14.1 傳遞實參的消息 97
14.2 多個實參 98
14.3 消息的嵌套發送 100
14.4 alloc和init 100
14.5 嚮nil發送消息 101
14.6 id 102
第15章 對象與內存 105
15.1 指針和指針的值 105
15.2 內存管理 107
15.3 ARC 108
第16章 NSString 111
16.1 創建NSString實例 111
16.2 NSString方法 112
16.3 類參考 113
16.4 文檔的其他部分 117
16.5 練習:尋找更多的NSString方法 118
第17章 NSArray 119
17.1 創建數組 119
17.2 存取數組 120
17.3 遍曆數組 123
17.4 NSMutableArray 124
17.5 舊式數組方法 125
第18章 第一個自定義類 129
18.1 存取方法 132
18.2 存取方法的命名規範 133
18.3 self 134
18.4 多個實現文件 134
18.5 類前綴 135
第19章 屬性 137
19.1 聲明屬性 137
19.2 屬性的特性 139
19.3 用點號調用存取方法 140
第20章 繼承 141
20.1 覆蓋方法 144
20.2 Super 145
20.3 繼承層次 145
20.4 description方法和%@轉換說明 148
第21章 對象實例變量及屬性 151
21.1 對象所有權與ARC 153
21.2 創建BNRAsset類 154
21.3 為BNREmployee創建一對多關係 155
第22章 類擴展 161
22.1 隱藏可變屬性 162
22.2 頭文件與繼承 163
22.3 頭文件與生成的實例變量 164
第23章 避免內存泄露 165
23.1 強引用循環 167
23.2 弱引用 170
23.3 弱引用的自動置零特性 171
23.4 深入學習:手動引用計數和ARC曆史 173
第24章 Collection類 177
24.1 NSSet/NSMutableSet 177
24.2 NSDictionary/NSMutableDictionary 180
24.3 不可修改對象 183
24.4 數組排序 184
24.5 過濾 185
24.6 Collection對象與所有權 186
24.7 C語言基本類型 187
24.8 Collection對象與nil 187
第25章 常量 189
25.1 預處理指令 190
25.2 #include與#import 191
25.3 #define 192
25.4 全局變量 192
25.5 enum 194
25.6 比較#define與全局變量 195
第26章 通過NSString和NSData將數據寫入文件 197
26.1 將NSString對象寫入文件 197
26.2 NSError 198
26.3 通過NSString讀取文件 200
26.4 將NSData對象所保存的數據寫入文件 201
26.5 從文件讀取數據並存入NSData對象 202
26.6 尋找特彆目錄 203
第27章 迴調 205
27.1 運行循環 206
27.2 目標-動作對 206
27.3 輔助對象 208
27.4 通知 212
27.5 如何選擇 213
27.6 迴調與對象所有權 214
27.7 深入學習:選擇器的工作機製 215
第28章 Block對象 217
28.1 使用Block對象 218
28.2 Block對象 vs. 其他迴調 223
28.3 深入學習Block對象 223
第29章 協議 229
調用可選方法 231
第30章 Property List格式 233
第4部分 由事件驅動的應用
第31章 第一個iOS應用 239
31.1 基於圖形用戶界麵的應用 240
31.2 創建iTahDoodle 240
31.3 BNRAppDelegate 242
31.4 Model-View-Controller 243
31.5 應用委托對象 245
31.6 設置視圖 246
31.7 在模擬器中運行程序 248
31.8 為按鈕關聯動作方法 249
31.9 為UITableView對象提供數據 252
31.10 保存並加載數組 255
31.11 深入學習:main()的作用 258
31.12 深入學習:在真機上運行iTahDoole 258
第32章 第一個Cocoa應用 259
32.1 開始開發TahDoodle 260
32.2 在Interface Builder中設置視圖 262
32.3 創建關聯 270
32.4 實現NSTableViewDataSource 275
32.5 保存並加載數據 276
第5部分 Objective-C高級主題
第33章 init 281
33.1 編寫init方法 281
33.2 實現基本的init方法 282
33.3 instancetype類型 283
33.4 使用並檢查父類的初始化方法 283
33.5 帶實參的init方法 284
33.6 在init中使用存取方法 286
33.7 多個初始化方法 287
33.8 禁用init方法 290
第34章 再談屬性 291
34.1 再談屬性的特性 291
34.2 實現存取方法 294
第35章 KVC 297
第36章 KVO 301
36.1 在KVO中使用context 302
36.2 顯式觸發通知 303
36.3 獨立的屬性 303
第37章 範疇 305
第6部分 C語言高級主題
第38章 位運算 309
38.1 按位或 310
38.2 按位與 311
38.3 其他位運算符 313
38.4 用enum定義位掩碼 315
38.5 占用更多字節的整數類型 316
第39章 C字符串 317
39.1 char 317
39.2 char * 318
39.3 string literal 321
39.4 C字符串和NSString對象的相互轉換 322
39.5 練習 322
第40章 C數組 323
第41章 從命令行運行 329
41.1 命令行參數 330
41.2 命令行的簡便方式 333
第42章 Switch語句 335
附錄 Objective-C運行時 337
結束語 345
索引 347
· · · · · · (
收起)