目 錄
第一部分 全新功能
第1章 全新的係統 2
1.1 新功能 2
1.1.1 集閤視圖 3
1.1.2 自動布局 3
1.1.3 自動引用計數 3
1.1.4 應用內購買的托管內容 4
1.1.5 社交框架 4
1.1.6 UI狀態保留 4
1.1.7 其他新功能 4
1.2 小結 6
1.3 擴展閱讀 6
第2章 熟悉Xcode 4和LLVM編譯器 7
2.1 瞭解用戶界麵 8
2.1.1 標簽式編輯器 9
2.1.2 按鍵綁定的變化 9
2.1.3 工程設置編輯器 10
2.1.4 內置的版本控製係統 10
2.1.5 工作區 10
2.2 單窗口工作方式 10
2.3 導航麵闆 11
2.3.1 工程導航麵闆 12
2.3.2 符號導航麵闆 12
2.3.3 搜索導航麵闆 12
2.3.4 問題導航麵闆 12
2.3.5 調試導航麵闆 12
2.3.6 斷點導航麵闆 12
2.3.7 日誌導航麵闆 13
2.4 輔助功能 13
2.5 內置的Interface Builder 13
2.6 Xcode之核心:LLVM編譯器 14
2.6.1 Clang編譯器前端 15
2.6.2 我是一個Bug!修復我 15
2.7 LLVM 4的新功能 15
2.7.1 字麵量 15
2.7.2 字麵量和可用性檢查 18
2.7.3 實例變量的自動閤成 18
2.8 使用Git進行版本控製 19
2.8.1 內置的Git版本控製係統 19
2.8.2 版本編輯器 19
2.8.3 Git最佳實踐 19
2.9 Scheme 20
2.9.1 為什麼使用Scheme 20
2.9.2 建議用Scheme實現你的意圖 21
2.9.3 創建一個Scheme 21
2.9.4 共享你的Scheme 22
2.10 為編譯配置添加注釋 22
2.10.1 創建xcconfig文件 22
2.10.2 重構編譯配置文件 23
2.11 將代碼轉換為支持ARC的Objective-C代碼 23
2.12 Xcode 4 Organizer 25
2.12.1 Automatic Device Provisioning 25
2.12.2 查看崩潰日誌和控製颱輸齣 25
2.12.3 查看應用沙盒數據 26
2.12.4 管理版本庫 26
2.12.5 管理應用程序歸檔 26
2.12.6 查看Objective-C和SDK文檔 26
2.13 小結 26
2.14 擴展閱讀 26
2.14.1 蘋果文檔 26
2.14.2 WWDC講座 27
2.14.3 博客 27
2.14.4 網上資源 27
2.14.5 圖書 27
第二部分 熟能生巧
第3章 Objective-C基礎知識 30
3.1 命名約定 30
3.2 自動引用計數 32
3.3 屬性 35
3.3.1 屬性修飾關鍵字 36
3.3.2 屬性最佳實踐 37
3.3.3 私有實例變量 37
3.4 存取器 37
3.5 分類和擴展 38
3.5.1 +load方法 40
3.5.2 使用關聯引用為分類添加數據 40
3.5.3 類擴展 42
3.6 正式協議和非正式協議 42
3.7 小結 43
3.8 擴展閱讀 44
3.8.1 蘋果文檔 44
3.8.2 其他資源 44
第4章 Cocoa設計模式 45
4.1 理解模型?視圖?控製器 45
4.1.1 使用模型類 46
4.1.2 使用視圖類 46
4.1.3 使用控製器類 47
4.2 理解委托和數據源 47
4.3 使用命令模式 48
4.3.1 使用目標?動作 48
4.3.2 使用方法簽名和調用 49
4.3.3 使用蹦床 52
4.3.4 撤銷 55
4.4 使用觀察者模式 55
4.5 使用單例模式 58
4.6 小結 60
4.7 擴展閱讀 60
4.7.1 蘋果文檔 60
4.7.2 其他資源 61
第5章 通過Objective-C的ARC管理內存 62
5.1 Objective-C的ARC基礎入門 62
5.1.1 曆史簡介 62
5.1.2 手動引用計數與自動引用計數 63
5.2 什麼是ARC 63
5.2.1 在ARC工程中集成非ARC的第三方代碼 64
5.2.2 在非ARC工程中集成ARC代碼 64
5.2.3 框架中的ARC代碼 64
5.2.4 ARC空聲明變量 67
5.2.5 Objective-C命名約定 67
5.2.6 覆蓋默認行為 67
5.2.7 自由橋接 68
5.2.8 ARC內部原理 68
5.3 常見的ARC移植錯誤 69
5.4 小結 72
5.5 擴展閱讀 72
5.5.1 蘋果文檔 72
5.5.2 WWDC講座 72
5.5.3 博客 73
第6章 熟練使用錶視圖 74
6.1 UITableView類的繼承關係 74
6.2 熟悉錶視圖 75
6.2.1 UITableViewController 75
6.2.2 UITableViewCell 75
6.2.3 提高錶視圖的滾動速度 75
6.2.4 自定義非重復錶單元 82
6.2.5 錶視圖最佳方案:編寫簡潔代碼,簡化控製器內容 83
6.3 小結 87
6.4 擴展閱讀 87
6.4.1 蘋果文檔 87
6.4.2 其他資源 87
第7章 集閤視圖與自動布局 88
7.1 集閤視圖 88
7.1.1 類與協議 88
7.1.2 示例 89
7.2 自動布局 97
7.2.1 使用自動布局 98
7.2.2 瞭解自動布局 98
7.2.3 相對布局約束 98
7.2.4 視覺化格式語言 101
7.2.5 調試布局錯誤 102
7.3 小結 103
7.4 擴展閱讀 104
7.14.1 蘋果文檔 104
7.14.2 WWDC講座 104
第8章 繪圖功能 105
8.1 iOS的不同繪圖係統 105
8.2 UIKit和視圖繪圖周期 106
8.3 視圖繪製與視圖布局 108
8.4 自定義視圖繪製 108
8.4.1 通過UIKit繪圖 109
8.4.2 路徑 109
8.4.3 理解坐標係 111
8.4.4 重新調整大小以及內容模式 114
8.4.5 變形 115
8.4.6 通過Core Graphics進行繪製 117
8.4.7 混用UIKit與Core Graphics 120
8.4.8 管理圖形上下文 121
8.5 優化UIView繪製 123
8.5.1 避免繪圖 123
8.5.2 緩存與後颱繪製 123
8.5.3 自定義繪圖與預渲染 123
8.5.4 像素對齊與模糊文本 124
8.5.5 透明、不透明與隱藏 125
8.6 CGLayer 125
8.7 小結 127
8.8 擴展閱讀 127
8.8.1 蘋果文檔 127
8.8.2 其他資源 128
第9章 Core Animation 129
9.1 視圖動畫 129
9.2 管理用戶交互 131
9.3 圖層繪製 132
9.3.1 直接設置內容 134
9.3.2 實現display方法 134
9.3.3 自定義繪圖 135
9.3.4 在自己的上下文中繪圖 136
9.4 移動對象 136
9.4.1 隱式動畫 137
9.4.2 顯式動畫 137
9.4.3 模型與錶示 138
9.4.4 關於定時 140
9.5 三維動畫 142
9.6 美化圖層 145
9.7 用動作實現自動動畫 146
9.8 為自定義屬性添加動畫 147
9.9 Core Animation與綫程 148
9.10 小結 149
9.11 擴展閱讀 149
9.11.1 蘋果文檔 149
9.11.2 其他資源 149
第10章 錯誤處理 150
10.1 錯誤處理模式 150
10.2 斷言 151
10.3 異常 153
10.4 捕獲與報告程序崩潰 153
10.5 錯誤和NSError 154
10.6 錯誤處理塊 156
10.7 日誌 157
10.7.1 記錄敏感信息 158
10.7.2 獲取日誌文件 159
10.8 小結 159
10.9 擴展閱讀 159
10.9.1 蘋果文檔 159
10.9.2 其他資源 159
第11章 位置服務 161
11.1 Core Location框架 161
11.1.1 獲取用戶位置 162
11.1.2 使用內置的羅盤獲取用戶前進方嚮 162
11.1.3 位置服務和用戶隱私 163
11.2 後颱位置服務 165
11.2.1 後颱獲取位置更新 165
11.2.2 顯著位置變更通知 165
11.2.3 區域監控(地理圍欄) 167
11.3 位置模擬 167
11.4 時刻關注電量消耗 168
11.5 小結 168
11.6 擴展閱讀 168
第三部分 選擇工具
第12章 錶視圖常用UI範例 170
12.1 下拉刷新 170
12.2 無限滾動 173
12.3 行內編輯與鍵盤 175
12.4 UITableView的動畫效果 177
12.5 錶視圖動畫的實際應用 178
12.5.1 實現摺疊列錶 178
12.5.2 實現選項抽屜 180
12.5.3 在錶視圖單元格中使用手勢識彆器 181
12.6 小結 181
12.7 擴展閱讀 182
第13章 多任務 183
13.1 後颱運行最佳實踐:能力越大責任越大 183
13.2 狀態恢復係統 185
13.2.1 測試狀態恢復係統 186
13.2.2 選擇性加入 186
13.2.3 應用啓動過程的變化 187
13.2.4 狀態恢復標識符 187
13.2.5 狀態編碼器與狀態解碼器 188
13.2.6 錶視圖和集閤視圖 191
13.2.7 狀態恢復係統的高級應用 192
13.3 多任務和運行循環簡介 192
13.4 以操作為中心的多任務開發 193
13.5 用GCD實現多任務 197
13.5.1 GCD和ARC 198
13.5.2 源和定時器 198
13.5.3 用分派屏障創建同步點 199
13.5.4 隊列目標和優先級 200
13.5.5 分派組 201
13.5.6 隊列關聯數據 202
13.5.7 分派數據 202
13.6 小結 203
13.7 擴展閱讀 203
13.7.1 蘋果文檔 203
13.7.2 WWDC講座 203
13.7.3 其他資源 203
第14章 REST解惑 204
14.1 REST簡介 205
14.2 選擇數據交換格式 205
14.2.1 在iOS中解析XML 205
14.2.2 在iOS中解析JSON 206
14.2.3 XML與JSON 207
14.2.4 模型版本化 208
14.3 假想的Web服務 208
14.4 重要提醒 209
14.5 RESTfulEngine架構(iHotelApp示例代碼) 209
14.5.1 NSURLConnection與第三方框架 209
14.5.2 創建RESTfulEngine 210
14.5.3 使用訪問令牌對API調用進行認證 213
14.5.4 在RESTfulEngine.m中覆蓋相關方法以添加自定義認證頭部 213
14.5.5 取消請求 214
14.5.6 請求響應 214
14.5.7 對JSON數據進行鍵值編碼 215
14.5.8 列錶頁麵的JSON對象與詳細頁麵的JSON對象 217
14.5.9 嵌套JSON對象 217
14.5.10 少即是多 219
14.5.11 錯誤處理 219
14.5.12 本地化 221
14.5.13 使用分類處理其他格式 221
14.5.14 在iOS中提升性能的小技巧 222
14.6 小結 222
14.7 擴展閱讀 222
14.7.1 蘋果文檔 222
14.7.2 其他資源 223
第15章 通過安全服務鞏固係統安全 224
15.1 理解iOS沙盒 224
15.2 保證網絡通信的安全 225
15.2.1 證書工作原理 226
15.2.2 檢驗證書的有效性 228
15.2.3 判斷證書的可信度 231
15.3 使用文件保護 233
15.4 使用鑰匙串 234
15.5 使用加密 236
15.5.1 AES概要 237
15.5.2 使用PBKDF2將密碼轉換成密鑰 237
15.5.3 AES模式和填充 239
15.5.4 初始化嚮量 240
15.5.5 使用HMAC進行認證 241
15.5.6 錯誤的密碼 241
15.5.7 進行單槽加密 242
15.5.8 提高CommonCrypto的性能 244
15.5.9 組閤使用加密和壓縮 247
15.6 小結 247
15.7 擴展閱讀 248
15.7.1 蘋果文檔 248
15.7.2 WWDC講座 248
15.7.3 其他資源 248
第16章 在多個蘋果平颱和蘋果設備上運行應用 249
16.1 開發多平颱應用 249
16.1.1 可配置的目標設置:Base SDK和Deployment Target 250
16.1.2 支持多個SDK時的注意事項:框架、類和方法 250
16.1.3 檢查框架、類和方法的可用性 252
16.2 檢測設備的功能 253
16.2.1 檢測設備及判斷功能 253
16.2.2 檢測硬件和傳感器 254
16.3 應用內發送Email和短信 258
16.4 檢查多任務支持 258
16.5 支持iPhone 5 259
16.6 UIRequiredDeviceCapabilities 260
16.7 小結 261
16.8 擴展閱讀 262
16.8.1 蘋果文檔 262
16.8.2 其他資源 262
第17章 國際化和本地化 263
17.1 什麼是本地化 263
17.2 本地化字符串 264
17.3 對未本地化的字符串進行審查 265
17.4 格式化數字和日期 266
17.5 nib文件和Base Internationalization 269
17.6 本地化復雜字符串 270
17.7 小結 272
17.8 擴展閱讀 272
17.8.1 蘋果文檔 272
17.8.2 WWDC講座 272
第18章 通過應用內購買提高銷售業績 273
18.1 開始之前 273
18.2 應用內購買什麼 273
18.2.1 禁止通過應用內購買齣售的産品 274
18.2.2 重新思考你的商業模式 275
18.3 在iTunes Connect上設置産品配置 275
18.3.1 第一步:為你的應用創建一個新的App ID 276
18.3.2 第二步:生成配置文件 277
18.3.3 第三步:創建應用的産品項 277
18.3.4 第四步:創建應用內購買産品項 278
18.3.5 第五步:生成共享密鑰 279
18.3.6 第六步:創建測試賬戶 279
18.3.7 第七步:創建托管內容 279
18.4 實現應用內購買 281
18.5 MKStoreKit簡介 281
18.5.1 為什麼要用MKStoreKit 281
18.5.2 MKStoreKit的設計 282
18.5.3 定製MKStoreKit 283
18.6 實現購買 285
18.7 下載托管內容 285
18.8 測試代碼 286
18.9 排錯 286
18.9.1 無效的産品ID 286
18.9.2 無法連接iTunes Store 286
18.9.3 你已經購買瞭該産品,但它尚未下載 287
18.10 小結 287
18.11 擴展閱讀 287
18.11.1 蘋果文檔 287
18.11.2 博客 287
18.11.3 其他資源 287
第19章 調試 288
19.1 LLDB 288
19.2 使用LLDB進行調試 288
19.2.1 dSYM文件 289
19.2.2 符號化 290
19.3 斷點 291
19.4 觀察點 294
19.5 LLDB控製颱 295
19.6 NSZombieEnabled標誌 298
19.7 不同的崩潰類型 299
19.7.1 EXC_BAD_ACCESS 299
19.7.2 SIGSEGV 300
19.7.3 SIGBUS 300
19.7.4 SIGTRAP 300
19.7.5 EXC_ARITHMETIC 300
19.7.6 SIGILL 300
19.7.7 SIGABRT 301
19.7.8 看門狗超時 301
19.7.9 自定義錯誤信號處理程序 301
19.8 收集崩潰報告 302
19.9 第三方崩潰報告服務 303
19.10 小結 303
19.11 擴展閱讀 304
19.11.1 蘋果文檔 304
19.11.2 WWDC講座 304
19.11.3 其他資源 304
第20章 性能調優 305
20.1 性能思維模式 305
20.1.1 指導方針一:産品是為瞭取悅用戶纔存在的 305
20.1.2 指導方針二:設備是為瞭方便用戶而存在的 305
20.1.3 指導方針三:做到極緻 305
20.1.4 指導方針四:用戶的感知纔是實際的 306
20.1.5 指導方針五:關注能帶來大收益的方麵 306
20.2 歡迎走入Instruments的世界 306
20.3 查找內存問題 308
20.4 查找CPU問題 311
20.4.1 Accelerate框架 314
20.4.2 GLKit 315
20.5 繪圖性能 315
20.6 優化磁盤訪問和網絡訪問 317
20.7 小結 318
20.8 擴展閱讀 318
20.8.1 蘋果文檔 318
20.8.2 其他資源 318
第四部分 超越極限
第21章 故事闆及自定義切換效果 320
21.1 初識故事闆 320
21.1.1 實例化故事闆 321
21.1.2 加載故事闆中的視圖控製器 321
21.1.3 聯綫 321
21.1.4 使用故事闆來實現錶視圖 323
21.2 自定義切換效果 324
21.2.1 還有一個優點 325
21.2.2 白璧微瑕 326
21.3 使用UIAppearance協議自定義視圖 326
21.4 小結 327
21.5 擴展閱讀 327
21.5.1 蘋果文檔 327
21.5.2 WWDC講座 327
21.5.3 其他資源 327
第22章 Cocoa的大招:鍵值編碼和觀察 328
22.1 鍵值編碼 328
22.1.1 用KVC賦值 330
22.1.2 用鍵路徑遍曆屬性 331
22.1.3 KVC和容器類 331
22.1.4 KVC和字典 335
22.1.5 KVC和非對象 336
22.1.6 用KVC實現高階消息傳遞 336
22.1.7 容器操作符 336
22.2 鍵值觀察 337
22.2.1 KVO和容器類 339
22.2.2 KVO是如何實現的 340
22.3 KVO的權衡 340
22.4 小結 342
22.5 擴展閱讀 342
22.5.1 蘋果文檔 342
22.5.2 其他資源 342
第23章 不同凡想:塊和函數式編程 343
23.1 什麼是塊 343
23.1.1 為什麼要用函數式編程 343
23.1.2 “函數式”UIAlertView 344
23.2 聲明塊 345
23.2.1 變量作用域 346
23.2.2 棧與堆 346
23.3 實現塊 347
23.4 塊和並發 349
23.4.1 GCD中的分派隊列 349
23.4.2 NSOperationQueue與GCD分派隊列 350
23.5 基於塊的Cocoa方法 351
23.5.1 UIView的動畫使用塊 351
23.5.2 展示和移除視圖控製器 352
23.5.3 TweetComposer 與應用程序中發送郵件(短信) 352
23.5.4 用NSDictionary的enum erationWithBlock遍曆字典 352
23.5.5 尋找基於塊的方法 353
23.6 支持情況 353
23.7 小結 353
23.8 擴展閱讀 354
23.8.1 蘋果文檔 354
23.8.2 博客 354
23.8.3 其他資源 354
第24章 離綫支持 355
24.1 需要離綫支持的原因 355
24.2 緩存策略 356
24.2.1 存儲緩存 356
24.2.2 緩存版本和失效 359
24.3 數據模型緩存 359
24.4 緩存版本控製 363
24.5 創建內存緩存 364
24.5.1 為AppCache設計內存緩存 365
24.5.2 處理內存警告 366
24.5.3 處理結束和進入後颱通知 367
24.6 創建URL緩存 367
24.6.1 過期模型 368
24.6.2 驗證模型 368
24.6.3 示例 368
24.6.4 用URL緩存來緩存圖片 369
24.7 小結 369
24.8 擴展閱讀 369
24.8.1 蘋果文檔 369
24.8.2 書籍 369
24.8.3 其他資源 369
第25章 雲端數據 370
25.1 iCloud 370
25.2 第三方雲服務提供商 372
25.3 Parse 373
25.3.1 Parse入門 373
25.3.2 Parse的頂層對象 374
25.3.3 代碼 374
25.4 StackMob 376
25.4.1 設置StackMob 376
25.4.2 登錄、上傳和獲取數據 377
25.4.3 StackMob自定義代碼 377
25.5 後端即服務的缺點 378
25.6 小結 378
25.7 擴展閱讀 378
25.7.1 蘋果文檔 378
25.7.2 WWDC講座 378
25.7.3 其他資源 379
第26章 精妙的文本布局 380
26.1 基本控件:字段、視圖和標簽 380
26.2 UIKit中的富文本 381
26.2.1 理解粗體、斜體和下劃綫 381
26.2.2 屬性化字符串 382
26.2.3 段落樣式 384
26.2.4 屬性化字符串和HTML 384
26.3 用Web視圖顯示富文本 385
26.3.1 在Web視圖中顯示和訪問HTML 385
26.3.2 響應用戶交互 386
26.3.3 在滾動視圖和錶格視圖中繪製Web視圖 386
26.4 Core Text 387
26.4.1 用CTFramesetter進行簡單的布局 387
26.4.2 為非連續路徑創建框架 388
26.4.3 排版器、文本行、連續文本和字形 390
26.4.4 沿著麯綫繪製文本 391
26.5 小結 395
26.6 擴展閱讀 395
26.6.1 蘋果文檔 395
26.6.2 WWDC講座 395
26.6.3 其他資源 396
第27章 創建Core Foundation應用 397
27.1 Core Foundation類型 397
27.2 命名和內存管理 398
27.3 分配器 399
27.4 內省 400
27.5 字符串和數據 400
27.5.1 常量字符串 401
27.5.2 創建字符串 401
27.5.3 轉換為C字符串 402
27.5.4 其他字符串操作符 404
27.5.5 字符串的支持存儲 404
27.5.6 CFData 405
27.6 容器類型 405
27.6.1 CFArray 406
27.6.2 CFDictionary 406
27.6.3 CFSet和CFBag 406
27.6.4 其他容器類型 407
27.6.5 迴調函數 407
27.7 自由橋接 408
27.8 小結 411
27.9 擴展閱讀 411
27.9.1 蘋果文檔 411
27.9.2 其他資源 411
第28章 深度解析Objective-C 412
28.1 理解類和對象 412
28.2 使用方法和屬性 414
28.3 消息傳遞如何工作 416
28.3.1 動態實現 417
28.3.2 快速轉發 419
28.3.3 普通轉發 422
28.3.4 轉發失敗 422
28.3.5 各種版本的objc_msgSend 423
28.4 方法混寫 423
28.5 ISA混寫 426
28.6 方法混寫與ISA混寫 427
28.7 小結 427
28.8 擴展閱讀 427
28.8.1 蘋果文檔 427
28.8.2 其他資源 428
索引 429
· · · · · · (
收起)