內容介紹
本書提供了關於iPhone SDK 以及iPhone 開發的全面信息,對iPhone SDK 中的各種組件做了深入淺出的介紹,包括iPhone 3.0 SDK 的所有新增特性,同時對iPhone 開發的基本流程、基本原理和基本原則進行了詳細且通俗的講解。此外,還結合實例講解了如何開發各種iPhone 特性,包括視圖、視圖控制器、警告、表格、媒體、控制項、人物、位置和事件。本書適合iPhone 和Mac 開發人員。
作者介紹
Erica Sadun著名iPhone技術專家,暢銷書作者。喬治亞理工學院計算機科學博士,擁有多年Apple開發經驗,著有30多本技術書籍,涉及編程、數字媒體、網站設計和數碼攝影等多個領域。Erica開發了十多個本地套用,他常在其iPhone編程部落格發表些極有見地的文章。作品目錄
第1章 iPhone SDK簡介 11.1 iPhone開發人員計畫 1
1.1.1 線上開發人員計畫 1
1.1.2 標準開發人員計畫 2
1.1.3 企業開發人員計畫 2
1.1.4 大學開發人員計畫 2
1.1.5 註冊 2
1.2 開始 2
1.2.1 下載SDK 2
1.2.2 開發設備 3
1.2.3 模擬器的限制 4
1.2.4 Tethering 4
1.3 理解型號差異 5
1.3.1 攝像頭 5
1.3.2 揚聲器和麥克風 5
1.3.3 手機 6
1.3.4 Core Location的差異 6
1.3.5 振動支持和接近感測器 6
1.3.6 處理器速度 6
1.3.7 OpenGL ES 7
1.4 平台限制 7
1.4.1 存儲限制 7
1.4.2 數據訪問限制 7
1.4.3 記憶體限制 7
1.4.4 互動限制 8
1.4.5 電量限制 8
1.4.6 應用程式限制 8
1.4.7 用戶行為限制 9
1.5 SDK限制 9
1.6 使用開發人員門戶 9
1.6.1 建立團隊 10
1.6.2 請求證書 10
1.6.3 註冊設備 11
1.6.4 註冊應用程式標識符 11
1.6.5 設定 12
1.7 組建iPhone項目 12
1.7.1 iPhone應用程式的主幹 13
1.7.2 main.m 14
1.7.3 應用程式委託 15
1.7.4 視圖控制器 16
1.7.5 關於本書示例代碼的說明 16
1.8 iPhone應用程式組件 17
1.8.1 應用程式資料夾層次結構 17
1.8.2 執行檔 17
1.8.3 Info.plist檔案 17
1.8.4 圖示和默認圖像 19
1.8.5 NIB檔案 20
1.8.6 應用程式束中不存在的檔案 20
1.8.7 IPA歸檔 20
1.8.8 沙盒 20
1.9 編程範例 21
1.9.1 面向對象編程 21
1.9.2 模型—視圖—控制器 22
1.10 小結 27
第2章 構建第一個項目 28
2.1 創建新項目 28
2.2 用模板構建Hello World應用程式 29
2.2.1 創建新項目 29
2.2.2 Project視窗 30
2.2.3 Detail窗格 31
2.2.4 編輯器視窗 32
2.2.5 查看項目 32
2.2.6 打開視圖控制器.xib 33
2.2.7 編輯視圖 34
2.2.8 運行應用程式 34
2.3 使用模擬器 35
2.4 極簡單的Hello World 36
2.4.1 瀏覽SDK API 38
2.4.2 將Interface Builder檔案轉換成Objective-C代碼 39
2.5 使用調試器 41
2.5.1 設定斷點 41
2.5.2 打開調試器 41
2.5.3 運行程式 41
2.5.4 查看標籤 42
2.5.5 設定另一個斷點 42
2.5.6 使用文本訊息 43
2.5.7 移動Clear Log按鈕 43
2.5.8 啟用Zombie 44
2.6 記憶體管理 45
2.6.1 泄漏 45
2.6.2 快取 45
2.7 秘訣:使用Instruments檢測記憶體泄漏 46
2.8 秘訣:使用Instruments監視快取對象的記憶體分配 48
2.9 使用Clang靜態分析器 50
2.10 針對iPhone進行構建 51
2.10.1 安裝開發配置 51
2.10.2 編輯應用程式標識符 51
2.10.3 設定Code Signing Identity 52
2.10.4 編譯和運行Hello World應用程式 53
2.10.5 對編譯後的應用程式簽名 53
2.11 從Xcode到iPhone:Organizer Interface 54
2.11.1 Projects and Sources列表 54
2.11.2 Devices列表 55
2.11.3 iPhone Development Tools列表 55
2.11.4 Summary選項卡 55
2.11.5 Console選項卡 56
2.11.6 Crash Logs選項卡 56
2.11.7 Screenshot選項卡 57
2.12 使用編譯器指令 57
2.12.1 獲得特定於iPhone的定義 58
2.12.2 運行時檢查 58
2.12.3 記憶標記 59
2.12.4 摺疊方法 60
2.13 針對發布進行構建 60
2.14 清除構建 61
2.14.1 針對App Store進行編譯 62
2.14.2 調試App Store上傳 63
2.15 針對臨時發布進行構建 64
2.15.1 註冊設備 64
2.15.2 構建臨時配置 64
2.15.3 在項目中添加授權檔案 64
2.15.4 在設定中添加授權檔案 64
2.15.5 構建臨時應用程式 65
2.15.6 為臨時發布添加圖片 65
2.16 定製Xcode標識 66
2.17 創建自定義Xcode模板 66
2.17.1 覆蓋com.yourcompany 67
2.17.2 構建其他模板 67
2.18 並排查看代碼 68
2.19 小結 69
第3章 Objective-C訓練營 70
3.1 Objective-C程式語言 70
3.2 類與對象 70
3.2.1 創建對象 72
3.2.2 記憶體分配 72
3.2.3 釋放記憶體 73
3.3 方法、訊息和選擇器 73
3.3.1 動態類型檢查 74
3.3.2 繼承方法 75
3.3.3 聲明方法 76
3.3.4 實現方法 76
3.3.5 類方法 78
3.3.6 快速枚舉 78
3.4 類層次結構 79
3.5 日誌信息 79
3.6 屬性 81
3.6.1 點表示法 81
3.6.2 屬性與記憶體管理 81
3.6.3 創建屬性 82
3.6.4 創建自定義的取值方法和賦值方法 83
3.6.5 屬性的特性 84
3.7 簡單的記憶體管理 85
3.7.1 創建對象 85
3.7.2 創建自動釋放的對象 86
3.7.3 自動釋放對象的生命周期 87
3.7.4 保留自動釋放的對象 87
3.7.5 已保留屬性 87
3.7.6 高保留計數 89
3.7.7 創建對象的其他方式 90
3.7.8 釋放對象 91
3.8 創建單例 93
3.9 類別(擴展類) 93
3.10 協定 94
3.10.1 定義協定 95
3.10.2 合併協定 95
3.10.3 增加回調 95
3.10.4 聲明可選回調 96
3.10.5 實現可選回調 96
3.10.6 符合協定 97
3.11 Foundation類 97
3.11.1 字元串 98
3.11.2 數字與日期 101
3.11.3 集合 103
3.12 補充內容:訊息轉發 107
3.12.1 實現訊息轉發 108
3.12.2 使用轉發訊息 109
3.12.3 思路整理 109
3.12.4 超級簡單的轉發 110
3.13 小結 110
第4章 設計界面 111
4.1 UIView和UIWindow 111
4.1.1 顯示數據的視圖 111
4.1.2 做出選擇的視圖 112
4.1.3 控制項 112
4.1.4 表格和拾取器 113
4.1.5 欄 113
4.1.6 進度與活動 114
4.2 UIViewController 114
4.2.1 UIViewController 114
4.2.2 UINavigationController 115
4.2.3 UITabBarController 115
4.2.4 表格控制器 115
4.2.5 地址簿控制器 116
4.2.6 UIImagePickerController 116
4.2.7 郵件撰寫 116
4.2.8 GKPeerPickerController 116
4.2.9 Media Player控制器 117
4.3 視圖設計幾何學 117
4.3.1 狀態欄 117
4.3.2 導航欄、工具列和選項卡欄 118
4.3.3 鍵盤和拾取器 119
4.3.4 文本欄位 120
4.3.5 UIScreen類 120
4.4 構建界面 120
4.5 實戰演練:使用IB構建溫度單位轉換器 121
4.5.1 新建項目 121
4.5.2 添加媒體 121
4.5.3 Interface Builder 121
4.5.4 編輯導航欄 122
4.5.5 替換主視圖 123
4.5.6 啟用仿真元素 123
4.5.7 創建圖像背景 123
4.5.8 添加標籤和視圖 123
4.5.9 測試界面 124
4.5.10 添加出口和動作 124
4.5.11 檢查新類頭 125
4.5.12 添加連線 126
4.5.13 獲取紫色 126
4.5.14 定義轉換方法 127
4.5.15 運行應用程式 127
4.6 實戰演練:手動構建溫度單位轉換器界面 127
4.7 實戰演練:創建混合轉換器 130
4.7.1 清理基本模板 131
4.7.2 通過.xib添加新視圖控制器類 131
4.7.3 設計界面 131
4.7.4 編輯視圖控制器實現 132
4.7.5 編輯main.m 132
4.7.6 運行應用程式 133
4.8 實戰演練:直接從代碼載入.xib檔案 133
4.8.1 清理.xib 134
4.8.2 更新loadView 134
4.9 針對旋轉進行設計 134
4.10 啟用旋轉 135
4.11 自動調整大小 136
4.11.1 自動調整大小示例 136
4.11.2 評估自動調整大小選項 138
4.12 移動視圖 138
4.13 交換視圖 141
4.14 補充內容:6個有用的Interface Builder技巧 142
4.15 小結 143
第5章 使用視圖控制器 144
5.1 使用導航控制器開發 144
5.1.1 設定導航控制器 144
5.1.2 推入和彈出視圖控制器 145
5.1.3 導航項類 145
5.1.4 模態演示 146
5.2 實用工具函式 146
5.3 秘訣:構建一個簡單的雙項選單 147
5.4 秘訣:添加一個分段控制項 149
5.5 秘訣:在視圖控制器之間導航 150
5.6 秘訣:使用創意彈出選項 152
5.6.1 載入一個視圖控制器數組 152
5.6.2 推入臨時視圖 152
5.7 秘訣:演示一個自定義模態信息視圖 153
5.8 秘訣:選項卡欄 155
5.9 秘訣:記住選項卡狀態 157
5.10 補充點:Interface Builder和選項卡欄控制器 160
5.11 小結 161
第6章 組合視圖和動畫 162
6.1 視圖層次結構 162
6.2 秘訣:建立視圖層次結構樹 163
6.3 秘訣:查詢子視圖 164
6.4 管理子視圖 166
6.4.1 添加子視圖 166
6.4.2 重新排序和刪除子視圖 166
6.4.3 視圖回調 166
6.5 秘訣:標記和檢索視圖 167
6.6 秘訣:命名視圖 168
6.7 視圖的幾何特徵 172
6.7.1 框架 172
6.7.2 變換 173
6.7.3 坐標系 173
6.8 秘訣:視圖框架的處理 173
6.8.1 調整大小 174
6.8.2 CGRect和中心 175
6.8.3 其他實用工具方法 176
6.9 秘訣:移動帶邊界的視圖到任意位置 179
6.10 秘訣:視圖變形 180
6.11 顯示和互動特性 183
6.12 UIView動畫 183
6.12.1 建立UIView動畫塊 184
6.12.2 動畫回調 184
6.13 秘訣:視圖的淡入和淡出 185
6.14 秘訣:視圖交換 186
6.15 秘訣:翻轉視圖 187
6.16 秘訣:使用Core Animation Transitions 188
6.17 秘訣:一般的Core Animation調用 190
6.18 翻頁過渡 192
6.19 秘訣:當視圖顯示時反彈視圖 193
6.20 秘訣:圖像視圖動畫 195
6.21 補充內容:給視圖添加映射 196
6.22 小結 199
第7章 圖像處理 201
7.1 秘訣:查找和載入圖像 201
7.1.1 讀取圖像數據 201
7.1.2 載入圖像檔案 203
7.2 秘訣:從iPhone相冊訪問照片 205
7.2.1 使用圖像拾取器 206
7.2.2 添加2.x支持 206
7.2.3 添加3.1支持 206
7.2.4 拾取視頻 206
7.3 秘訣:選擇和定製相冊中的圖像 208
7.4 秘訣:拍攝照片並將照片寫到相冊上 210
7.5 秘訣:將圖片保存到Documents資料夾 212
7.6 秘訣:通過電子郵件傳送圖片 213
7.7 秘訣:捕捉定時拍攝的照片 214
7.8 秘訣:使用定製攝像頭覆蓋圖 216
7.9 秘訣:在可滾動視圖中顯示圖像 218
7.10 秘訣:創建多圖像分頁滾動 220
7.11 秘訣:從頭開始創建新圖像 221
7.12 秘訣:構建圖像縮略圖 224
7.13 調整照片方向 227
7.14 捕捉螢幕截圖 229
7.15 秘訣:直接處理點陣圖 230
7.15.1 在點陣圖上下文中繪製 230
7.15.2 套用圖像處理 232
7.15.3 圖像處理實況 233
7.16 補充內容:灰度模式 236
7.17 小結 237
第8章 手勢和觸摸 238
8.1 觸摸 238
8.1.1 階段 238
8.1.2 觸摸和視圖方法 239
8.1.3 觸摸視圖 239
8.1.4 多點觸摸 240
8.2 秘訣:添加一個簡單直觀的操作界面 240
8.3 秘訣:限制移動 241
8.4 秘訣:測試觸摸 242
8.5 秘訣:測試點陣圖上的觸摸 243
8.6 秘訣:向直接操作界面添加持久性 246
8.6.1 存儲狀態 246
8.6.2 恢復狀態 247
8.7 秘訣:通過歸檔實現持久性 248
8.8 秘訣:添加撤銷支持 250
8.8.1 創建撤銷管理器 250
8.8.2 子視圖撤銷支持 250
8.8.3 使用導航欄 250
8.8.4 註冊撤銷 251
8.9 秘訣:添加晃動控制的撤銷支持 252
8.9.1 添加撤銷和恢復的動作名稱 253
8.9.2 提供晃動以編輯支持 253
8.9.3 設定第一個回響程式 253
8.10 秘訣:螢幕繪圖 254
8.11 秘訣:線的計算 255
8.12 秘訣:檢測圓形 257
8.13 秘訣:多點觸摸 259
8.14 秘訣:區分手勢 260
8.15 補充內容:互動式調整大小和旋轉 264
8.16 小結 269
第9章 構建和使用控制項 270
9.1 UIControl類 270
9.1.1 控制項種類 270
9.1.2 控制項事件 270
9.2 按鈕 272
9.3 在Interface Builder中添加按鈕 273
9.3.1 樣式 273
9.3.2 連線按鈕與動作 274
9.3.3 假按鈕 275
9.4 在Xcode中構建定製按鈕 275
9.5 多行按鈕文本 277
9.6 向按鈕添加動畫元素 277
9.7 秘訣:為按鈕回響製作動畫效果 278
9.8 秘訣:使用開關 279
9.9 秘訣:添加定製滑塊縮略圖 281
9.9.1 定製UISlider 281
9.9.2 增加效能 282
9.10 秘訣:創建一個可兩次點擊的分段控制項 286
9.11 秘訣:子類化UIControl 287
9.11.1 跟蹤觸摸 288
9.11.2 分派事件 288
9.12 秘訣:關閉UITextField鍵盤 290
9.12.1 文本特徵屬性 291
9.12.2 其他文本欄位屬性 291
9.13 秘訣:關閉UITextView鍵盤 292
9.14 秘訣:構建更好的文本編輯器 294
9.15 秘訣:文本輸入篩選 296
9.16 秘訣:添加一個頁面指示器控制項 298
9.17 秘訣:創建一個可定製的分頁滾動條 300
9.18 秘訣:構建工具列 304
9.18.1 在Xcode中構建工具列 305
9.18.2 工具列提示 307
9.19 補充內容:智慧型標籤 307
9.20 小結 308
第10章 提醒用戶 309
10.1 通過警告框直接與用戶對話 309
10.1.1 構建簡單的警告框 309
10.1.2 警告框委託 310
10.1.3 顯示警告框 311
10.1.4 警告框類 311
10.2 秘訣:無按鈕警告框 312
10.3 秘訣:使用run循環創建模態警告框 313
10.4 秘訣:要求用戶進行文本輸入 316
10.5 秘訣:對警告框視圖使用可變參數 318
10.6 秘訣:展示簡單的選單 319
10.7 秘訣:在動作表中顯示文本 321
10.8 “Please Wait”:向用戶顯示進度 321
10.9 秘訣:構建UIProgressView 322
10.10 構建定製覆蓋圖 324
10.11 秘訣:可點擊的覆蓋圖 326
10.12 秘訣:可調整方向的滾動警告框 327
10.13 秘訣:使用網路活動指示器 329
10.14 秘訣:給應用程式貼標記 329
10.15 秘訣:簡單的音頻警告 330
10.15.1 系統聲音 330
10.15.2 震動 331
10.15.3 警告 331
10.15.4 延遲 332
10.16 補充內容:展示音量警告框 333
10.17 小結 333
第11章 創建和管理表格視圖 335
11.1 UITableView和UITableView- Controller簡介 335
11.2 秘訣:實現最基本的表格 337
11.2.1 填充表格 337
11.2.2 數據源方法 338
11.2.3 重用單元格 338
11.2.4 字型表格示例 338
11.3 秘訣:更改表格的背景色 340
11.4 秘訣:創建表格圖像後擋板 341
11.5 秘訣:單元格類型研究 343
11.6 秘訣:使用Interface Builder構建定製單元格 344
11.6.1 創建定製單元格的技巧 346
11.6.2 增加定製選擇特性 347
11.7 秘訣:單元格顏色交替 347
11.8 秘訣:使用內置控制項構建定製單元格 348
11.9 秘訣:記住定製單元格的控制狀態 350
11.10 秘訣:創建勾選的表格單元格 353
11.11 移除單元格選中時的高亮顯示狀態 354
11.12 秘訣:處理展開配件 355
11.13 秘訣:刪除單元格 357
11.13.1 顯示刪除控制項 357
11.13.2 隱藏刪除控制項 357
11.13.3 處理刪除請求 357
11.13.4 滑動單元格 358
11.13.5 添加單元格 358
11.14 秘訣:對單元格重新排序 360
11.15 秘訣:向表格添加撤銷支持 361
11.15.1 支持“晃動以編輯” 362
11.15.2 添加Undo和Redo按鈕 362
11.15.3 執行撤銷和恢復 363
11.15.4 準備表格撤銷操作 364
11.16 秘訣:表格排序 366
11.17 秘訣:搜尋表格 367
11.17.1 構建搜尋顯示控制器 367
11.17.2 構建可搜尋數據源方法 368
11.17.3 委託方法 369
11.18 秘訣:處理分段 370
11.18.1 創建基於分段的數據結構 370
11.18.2 分段計數和行計數 371
11.18.3 返回單元格 371
11.18.4 創建標題 372
11.18.5 創建分段索引 373
11.18.6 分段委託 374
11.19 秘訣:創建分組表格 374
11.20 秘訣:定製表頭和腳註 375
11.21 秘訣:創建帶有各種單元格類型和高度的分組表格 377
11.22 秘訣:構建多輪表格 380
11.23 秘訣:使用基於視圖的選取器 383
11.24 秘訣:使用UIDatePicker 385
11.25 補充內容:格式化日期 388
11.26 小結 390
第12章 使用GameKit和Bonjour進行連線 391
12.1 秘訣:創建基本的GameKit服務 391
12.1.1 GameKit藍牙限制 391
12.1.2 設備限制 392
12.1.3 會話 392
12.1.4伺服器、客戶端、對等機 393
12.1.5對等機連線過程 393
12.1.6傳送和接收數據 395
12.1.7狀態更改 396
12.1.8創建GameKit輔助類 397
12.2秘訣:後台監控 402
12.3秘訣:通過GameKit傳送複雜數據 403
12.4秘訣:GameKit語音聊天 405
12.4.1將GameKit作為中間人 405
12.4.2實現語音聊天 406
12.5秘訣:使用Bonjour創建iPhone伺服器 407
12.6秘訣:為iPhone Bonjour服務創建Mac客戶端 411
12.7秘訣:解決實際GameKit限制 414
12.7.1使用iPhone貼上板 415
12.7.2存儲數據 415
12.7.3檢索數據 415
12.7.4可靠的貼上板 415
12.8秘訣:通過BonjourHelper連線iPhone進行遊戲 418
12.8.1註冊Bonjour名稱和連線埠 419
12.8.2雙工連線 419
12.8.3讀取數據 419
12.8.4關閉連線 419
12.9創建“線上”GameKit連線 426
12.10補充內容:掃描服務 428
12.11小結 431
第13章 網路連線 432
13.1秘訣:檢查網路狀態 432
13.2秘訣:為可達性擴展UIDevice類 433
13.3秘訣:掃描連線變化 436
13.4秘訣:重新獲得IP和主機信息 439
13.5秘訣:檢查站點可用性 441
13.6秘訣:同步下載 443
13.7秘訣:異步下載 445
13.8秘訣:應對身份驗證的挑戰 450
13.9秘訣:使用密鑰鏈存儲敏感數據 451
13.9.1密鑰鏈包裝器 451
13.9.2密鑰鏈持久性 452
13.10秘訣:通過POST上傳 453
13.11秘訣:上傳數據 456
13.12秘訣:在應用程式之間共享密鑰鏈 459
13.13秘訣:將XML轉換為樹 460
13.13.1構建解析樹 461
13.13.2使用樹結果 462
13.13.3分解樹 464
13.14秘訣:構建一個簡單的基於Web的伺服器 465
13.15補充內容:FTPHelper 468
13.16小結 469
第14章 設備能力 471
14.1 秘訣:訪問核心設備信息 471
14.2 添加設備功能限制 472
14.3 秘訣:重新獲得更多設備信息 473
14.4 秘訣:監控iPhone的電池狀態 475
14.5 秘訣:啟用和禁用接近感測器 476
14.6 秘訣:使用加速度將方向定位為“向上” 477
14.7 秘訣:使用加速度移動螢幕上的對象 479
14.8 秘訣:檢測設備方向 481
14.9 秘訣:利用運動事件檢測晃動 482
14.10 秘訣:直接從加速計檢測晃動 484
14.11 補充內容:檢查可用的磁碟空間 487
14.12 小結 487
第15章 音頻、視頻和媒體工具 488
15.1 秘訣:使用AVAudioPlayer播放音頻 488
15.1.1初始化音頻播放器 488
15.1.2監控音量水平 489
15.1.3回放進度和拖曳播放 490
15.1.4捕獲回放結束 490
15.2秘訣:循環播放音頻 494
15.3秘訣:處理音頻中斷 496
15.4秘訣:忽略休眠的音頻 497
15.5秘訣:錄製音頻 499
15.6秘訣:使用音頻佇列錄製音頻 503
15.7秘訣:使用媒體播放器播放視頻 508
15.8秘決:錄製視頻 510
15.9秘訣:選取和編輯視頻 512
15.10秘訣:使用MPMediaPicker- Controller選取音頻 514
15.11秘訣:創建媒體查詢 517
15.11.1建立查詢 517
15.11.2使用謂詞 518
15.11.3解決速度問題 519
15.12秘訣:使用MPMusicPlayer- Controller 520
15.13補充內容:額外的電影播放器屬性 524
15.14小結 524
第16章 推送通知 525
16.1 推送通知簡介 525
16.1.1 推送技術的工作原理 526
16.1.2 多個提供商支持 526
16.1.3 安全 527
16.1.4 推送的局限性 527
16.2 準備推送 527
16.2.1 生成一個應用程式標識符 528
16.2.2 生成SSL證書 528
16.2.3 推送服務特有的準備檔案 530
16.3 註冊應用程式 530
16.3.1 檢索設備令牌 531
16.3.2 處理令牌請求錯誤 532
16.3.3 回響通知 532
16.4 秘訣:推送客戶端框架 533
16.5 構建通知的有效內容 538
16.5.1 本地化警告 539
16.5.2從字典轉換為JSON 539
16.5.3 自定義數據 540
16.5.4 啟動時接收數據 540
16.6 秘訣:傳送通知 541
16.7 秘訣:實際使用推送服務 545
16.8 反饋服務 549
16.9 推送服務設計 550
16.10 小結 550
第17章 使用Core Location和MapKit 552
17.1 Core Location的工作原理 552
17.1.1 GPS定位 552
17.1.2 Skyhook Wi-Fi定位 552
17.1.3 蜂窩基站定位技術 553
17.1.4 網際網路提供商定位技術 553
17.1.5 混合使用這些方法 553
17.2 秘訣:Core Location簡介 554
17.3 秘訣:跟蹤速率 556
17.4 秘訣:計算速率和距離 557
17.5 秘訣:使用heading值跟蹤北向 559
17.6 秘訣:逆向地理編碼 561
17.7 秘訣:查看位置 562
17.8 秘訣:用戶位置註解 565
17.9 秘訣:創建地圖註解 567
17.9.1 創建、添加和刪除註解 568
17.9.2 註解視圖 568
17.9.3 自定義註解視圖 569
17.9.4 回響註解按鈕輕擊事件 570
17.10 補充內容:地理編碼 574
17.11 小結 577
第18章 連線地址簿 578
18.1秘訣:使用地址簿 578
18.1.1地址簿UI 578
18.1.2地址簿 578
18.1.3檢索和設定ABRecord字元串 579
18.1.4簡單的日期屬性 581
18.1.5獲取和設定多值記錄屬性 581
18.1.6地址和即時訊息屬性 584
18.1.7使用地址簿圖像 586
18.1.8創建、添加和刪除記錄 586
18.1.9搜尋聯繫人 587
18.1.10處理分組 588
18.1.11ABContact、ABGroup和ABContactsHelper 590
18.2秘訣:搜尋地址簿 590
18.3秘訣:訪問圖像數據 592
18.4秘訣:選取人員 594
18.5秘訣:限制聯繫人選取器屬性 595
18.6秘訣:添加新聯繫人 597
18.7秘訣:修改現有聯繫人 599
18.8秘訣:ABUnknownPersonView-Controller 600
18.9補充內容:添加隨機的聯繫人拼圖 602
18.10小結 604
第19章 使用Core Data 605
19.1Core Data簡介 605
19.1.1創建和編輯模型檔案 605
19.1.2生成頭檔案 606
19.1.3創建Core Data上下文 607
19.1.4添加對象 608
19.1.5查詢資料庫 610
19.1.6檢測更改 611
19.1.7刪除對象 611
19.2秘訣:將Core Data用作表格數據源 613
19.3秘訣:搜尋表與Core Data 616
19.4秘訣:集成Core Data表與實時數據編輯 618
19.5秘訣:使用Core Data實現撤銷—重做支持 620
19.6小結 622
第20章 StoreKit:應用程式內購買 623
20.1StoreKit入門 623
20.2創建測試賬戶 625
20.3創建應用程式內購買商品 625
20.3.1填寫定價部分 626
20.3.2添加商品詳細信息 627
20.3.3提交購買GUI螢幕截圖 628
20.3.4開發人員批准 628
20.4提交應用程式 628
20.5構建GUI 629
20.6購買商品 631
20.6.1註銷iTunes賬戶以進行測試 631
20.6.2購買之後重新獲得編程控制 631
20.6.3註冊購買商品 632
20.6.4恢復購買商品 633
20.6.5購買多個商品 634
20.6.6處理註冊購買過程中的延遲 634
20.7驗證收據 634
20.8小結 636
第21章 輔助功能以及其他iPhone OS服務 637
21.1將VoiceOver輔助功能添加到應用程式 637
21.1.1Interface Builder中的輔助功能 637
21.1.2在代碼中使用輔助功能 639
21.1.3使用模擬器進行測試 640
21.1.4在iPhone上測試輔助功能 640
21.2秘訣:添加自定義設定包 641
21.2.1Settings應用程式 642
21.2.2避免敏感信息 643
21.2.3Settings模式 643
21.2.4定義設定包 643
21.2.5設定和用戶 647
21.2.6檢查用戶默認值 647
21.3秘訣:創建基於URL的服務 648
21.3.1使用URL模式 648
21.3.2服務缺點 648
21.3.3交叉促銷 649
21.3.4註冊模式:聲明URL 649
21.3.5註冊模式:添加處理程式方法 649
21.3.6使調用應用程式恢復控制 650
21.3.7實現自定義模式 651
21.4小結 652
附錄A Info.plist密鑰 653