前言 xiii
本書適閤哪些讀者 xiii
第4版有哪些更新 xiii
教學理念 xiv
如何使用本書 xv
本書是如何組織的 xv
代碼風格 xvii
版式說明 xvii
開發所需的硬件與軟件 xviii
第1章 第一個簡單的iOS應用 1
1.1 創建Xcode項目 2
1.2 模型-視圖-控製器 4
1.3 設計Quiz 5
1.4 創建視圖控製器 6
1.5 創建界麵 8
1.6 創建關聯 14
1.7 創建模型對象 18
1.8 大功告成 21
1.7 在模擬器上運行應用 22
1.9 安裝應用 23
1.9 應用圖標 25
1.10 啓動圖片 27
第2章 Objective-C 29
2.1 對象 29
2.2 使用對象 30
2.3 編寫命令行工具RandomItems 33
2.4 創建Objective-C類的子類 38
2.5 深入學習NSArray與NSMutableArray 58
2.6 異常與未知選擇器 60
2.7 練習 62
2.8 初級練習:查找問題 62
2.9 中級練習:另一個初始化方法 62
2.10 高級練習:另一個類 63
2.11 關於深入學習部分 63
2.12 深入學習:如何為類命名 63
2.13 深入學習:#import和@import 64
第3章 通過ARC管理內存 65
3.1 棧 65
3.2 堆 66
3.3 指針變量與對象所有權 66
3.4 強引用與弱引用 70
3.5 屬性 75
3.6 深入學習:屬性閤成 81
3.7 深入學習:Autorelease池與ARC曆史 83
第4章 視圖與視圖層次結構 85
4.1 視圖基礎 86
4.2 視圖層次結構 86
4.3 創建UIView子類 88
4.4 在drawRect:方法中自定義繪圖 94
4.5 關於開發者文檔 105
4.6 初級練習:繪製圖像 106
4.7 深入學習:Core Graphics 106
4.8 高級練習:陰影和漸變 108
第5章 視圖:重繪與UIScrollView 111
5.1 運行循環和重繪視圖 112
5.2 類擴展 114
5.3 使用UIScrollView 115
第6章 視圖控製器 119
6.1 創建UIViewController子類 120
6.2 另一個視圖控製器 123
6.3 UITabBarController 130
6.4 視圖控製器的初始化方法 134
6.5 添加本地通知 135
6.6 加載和顯示視圖 136
6.7 與視圖控製器及其視圖進行交互 138
6.8 初級練習:增加一個標簽項 139
6.9 中級練習:控製邏輯 139
6.10 深入學習:鍵值編碼 139
6.11 深入學習:Retina顯示屏 140
第7章 委托與文本輸入 143
7.1 文本框(UITextField) 143
7.2 委托 146
7.3 協議 148
7.4 嚮屏幕中添加UILabel對象 150
7.5 運動效果 152
7.6 使用調試器 153
7.7 深入學習:main()與UIApplication 157
7.8 中級練習:捏閤-縮放 157
第8章 UITableView與UITableViewController 159
8.1 編寫Homepwner應用 159
8.2 UITableViewController 160
8.3 UITableView數據源 164
8.4 UITableViewCell對象 170
8.5 代碼片段庫 175
8.6 初級練習:錶格段 178
8.7 中級練習:固定行 178
8.8 高級練習:修改UITableView對象的外觀 178
第9章 編輯UITableView 179
9.1 編輯模式 179
9.2 增加行 185
9.3 刪除行 187
9.4 移動行 188
9.5 初級練習:更改“刪除”按鈕的標題 190
9.6 中級練習:禁止移動某個錶格行 190
9.7 高級練習:徹底禁止移動某個錶格行 190
第10章 UINavigationController 191
10.1 UINavigationController對象 192
10.2 額外的視圖控製器 196
10.3 UINavigationController的導航功能 201
10.4 UINavigationBar 205
10.5 初級練習:顯示數字鍵盤 210
10.6 中級練習:關閉數字鍵盤 210
10.7 高級練習:壓入更多視圖控製器 210
第11章 相機 211
11.1 通過UIImageView對象顯示照片 212
11.2 通過UIImagePickerController拍攝照片 216
11.3 創建BNRImageStore 220
11.4 NSDictionary 222
11.5 創建並使用鍵 225
11.6 使用BNRImageStore 227
11.7 關閉鍵盤 228
11.8 初級練習:編輯照片 230
11.9 中級練習:刪除照片 230
11.10 高級練習:Camera Overlay 230
11.11 深入學習:導航實現文件 230
11.12 深入學習:攝像 233
第12章 觸摸事件與UIResponder 235
12.1 觸摸事件 235
12.2 創建TouchTracker應用 237
12.3 實現BNRDrawView,完成繪圖功能 239
12.4 處理觸摸事件並創建綫條對象 240
12.5 初級練習:保存與讀取 245
12.6 中級練習:顔色 245
12.7 高級練習:圓圈 246
12.8 深入學習:響應對象鏈 246
12.9 深入學習:UIControl 247
第13章 UIGestureRecognizer與UIMenuController 249
13.1 UIGestureRecognizer子類 250
13.2 用UITapGestureRecognizer對象識彆“按下”手勢 250
13.3 同時添加多種觸摸手勢 252
13.4 UIMenuController 254
13.5 UILongPressGestureRecognizer 256
13.6 UIPanGestureRecognizer以及同時識彆多個手勢 257
13.7 深入學習:UIMenuController與UIResponderStandardEditActions 260
13.8 深入學習:再談UIGestureRecognizer 261
13.9 中級練習:修正錯誤 262
13.10 高級練習:速度與寬度 262
13.11 高級練習:顔色 262
第14章 調試工具 263
14.1 儀錶 263
14.2 Instruments 265
14.3 靜態分析器 275
14.4 項目、目標和構建設置 277
第15章 自動布局入門 283
15.1 通用化Homepwner 283
15.2 自動布局係統 285
15.3 在Interface Builder中添加約束 289
15.4 調試約束問題 298
15.5 初級練習:打造完美界麵 306
15.6 中級練習:通用化Quiz 307
15.7 深入學習:使用_autolayoutTrace方法調試約束問題 307
15.8 深入學習:使用多個XIB文件 308
第16章 在代碼中使用自動布局 309
16.1 視覺化格式語言 310
16.2 創建約束 311
16.3 添加約束 312
16.4 固有內容大小 315
16.5 另一種添加方式 316
16.6 深入學習:NSAutoresizingMaskLayoutConstraint 318
第17章 自動轉屏,UIPopoverController與模態視圖控製器 321
17.1 自動轉屏 321
17.2 自動轉屏通告機製 324
17.3 UIPopoverController 326
17.4 更多的模態視圖控製器 329
17.5 綫程安全的單例 337
17.6 初級練習:為另一個類添加綫程安全的單例 339
17.7 高級練習:UIPopoverController對象的外觀 339
17.8 深入學習:位掩碼 339
17.9 深入學習:視圖控製器之間的關係 340
第18章 保存、讀取與應用狀態 345
18.1 固化 345
18.2 應用沙盒 348
18.3 NSKeyedArchiver與NSKeyedUnarchiver 350
18.4 應用狀態與狀態切換 353
18.5 通過NSData將數據寫入文件 356
18.6 NSNotificationCenter和內存過低警告 358
18.7 模型-視圖-控製器-存儲設計模式 361
18.8 初級練習:PNG 361
18.9 深入學習:應用的狀態切換 362
18.10 深入學習:文件係統的讀取和寫入 363
18.11 深入學習:應用程序包 366
第19章 創建UITableViewCell子類 369
19.1 創建BNRItemCell 369
19.2 處理圖片 377
19.3 由UITableViewCell對象轉發動作消息 380
19.4 捕獲變量 385
19.5 初級練習:設置顔色 386
19.6 高級練習:縮放 387
19.7 深入練習:UICollectionView 387
第20章 動態字體 389
20.1 使用用戶首選字體 390
20.2 響應用戶首選字體的改變 392
20.3 修改自動布局約束 393
20.4 確定用戶首選字體大小 395
20.5 修改BNRItemCell 397
第21章 Web服務與UIWebView 403
21.1 Web服務 404
21.2 UIWebView 414
21.3 認證信息 416
25.4 中級練習:加強UIWebView 418
21.5 高級練習:課程預告 418
21.6 深入學習:HTTP請求主體 419
第23章 Core Data 431
23.1 對象-關係映射 431
23.2 用Core Data重寫BNRItemStore的數據保存功能 432
23.3 再談SQL 450
23.4 Faults 451
23.5 各種存取機製的優缺點 453
23.6 初級練習:Asset的iPad界麵 454
23.7 中級練習:增加BNRAssetType對象 454
23.8 高級練習:顯示某種類型的BNRItem對象 454
第24章 狀態恢復 455
24.1 狀態恢復的工作原理 455
24.2 啓用狀態恢復 456
24.3 恢復標識和恢復類 457
24.4 狀態恢復與應用生命周期 459
24.5 恢復視圖控製器 461
24.6 編碼狀態數據 464
24.7 保存視圖狀態 465
24.8 中級練習:為另一個應用啓用狀態恢復 467
24.9 深入學習:設置快照 467
第25章 本地化 469
25.1 通過NSNumberFormatter實施國際化 470
25.2 資源的本地化 473
25.3 NSLocalizedString()與字符串對照錶 477
25.4 初級練習:再添加一套本地化資源 480
25.5 深入學習:NSBundle在國際化過程中的作用 480
25.6 深入學習:不通過基礎國際化對XIB文件實施本地化 481
第26章 NSUserDefaults 483
26.1 NSUserDefaults 483
26.2 設置束 487
第27章 控製動畫 491
27.1 基礎動畫 491
27.2 關鍵幀動畫 494
27.3 在動畫完成後執行特定的代碼 496
27.4 彈簧動畫 497
27.5 中級練習:提升Quiz的用戶體驗 498
第28章 UIStoryboard 499
28.1 創建Storyboard文件 499
28.2 Storyboard文件中的UITableViewController 503
28.3 Segue 506
28.4 改變顔色 512
28.5 傳遞數據 513
28.6 Storyboards的優缺點 520
28.7 深入學習:狀態恢復 521
第29章 後記 523
29.1 接下來做什麼 523
29.2 結束語 524
第22章 UISplitViewController 421
22.1 在Nerdfeed中使用UISplitViewController 422
22.2 在竪排模式下顯示主視圖控製器 425
22.3 將Nerdfeed改為通用應用 428
索引 525
· · · · · · (
收起)