內容簡介
本書由業界知名專家聯合編寫,在更新已有iPhone應用程式的同時增加了iPad方面的內容。除了介紹iPhone/iPad開發的基礎知識之外,還討論了激動人心的主題,如加速計、點對點遊戲、Map Kit框架、推送通知和套用內購買功能。本書通過逐步指導教你如何將API整合到新應用程式或者已有的應用程式。
讀完本書,你將掌握創建功能完整的iPhone應用程式所需了解的一切。另外,書中包含很多示例程式,如聊天客戶、視頻遊戲、互動式地圖等。
媒體評論
“有關這些設備未來發展所需的內容盡在本書!”
——Berndt Hamboeck,pmOne
“蘋果公司應該將本書作為官方的iPhone和iPad開發圖書。”
——Jason Jung,Rockwell
“沒有閱讀本書之前,不要啟動Xcode。”
——Ted Neward,Neward & Associates
作者簡介
Brandon Trebitowski 知名移動開發社區iCodeBlog.com的創始人。曾在英特爾公司工作過,現為ELC技術公司資深技術人員。
Christopher Allen 著名iPhone開發技術專家,最大的iPhone Web開發社區iphonewebdev.com的創辦者,iPhoneDevCamp技術大會的創辦人和組織者。他還是下一代SSL協定TLS的主要開發者。
Shannon Appelcline iPhone技術顧問。他也是資深的遊戲開發者,著名線上遊戲Skotos的運營總監。
圖書目錄
第1章 iPhone與iPad簡介 1
1.1 歷史回顧 1
1.2 人人為我,我為人人:iPhone OS平台 2
1.3 核心硬體規範 2
1.3.1 iPhone 2
1.3.2 iPad 3
1.3.3 iPod Touch 4
1.3.4 iPhone和iPad的輸入及輸出規範 4
1.3.5 iPhone和iPad網路規範 5
1.3.6 iPhone OS瀏覽器規範 6
1.3.7 移動Web標準 7
1.3.8 其他硬體特性 7
1.4 iPhone和iPad的獨特之處 8
1.5 理解iPhone和iPad觸摸式互動 9
1.6 小結 10
第2章 Objective-C和iPhone OS SDK 11
2.1 準備使用SDK 11
2.1.1 安裝SDK 11
2.1.2 SDK剖析 13
2.2 Objective-C介紹 14
2.2.1 概述 14
2.2.2 訊息 15
2.2.3 類定義 17
2.2.4 屬性 18
2.2.5 其他編譯器指令 20
2.2.6 類別和協定 20
2.2.7 Objective-C總結 21
2.3 iPhone OS介紹 22
2.3.1 iPhone OS剖析 22
2.3.2 iPhone OS的對象層次結構 23
2.3.3 視窗和視圖 24
2.4 iPhone OS的方法 25
2.4.1 對象創建 25
2.4.2 記憶體管理 27
2.4.3 事件回響 28
2.4.4 生命周期管理 29
2.5 小結 30
第3章 使用Xcode 31
3.1 Xcode簡介 31
3.1.1 剖析Xcode 31
3.1.2 在Xcode中編譯和執行 33
3.2 在Xcode中創建第一個iPhone項目:Hello, World! 33
3.2.1 理解main.m 33
3.2.2 理解應用程式委託 34
3.2.3 編寫“Hello, World!” 36
3.3 在Xcode中創建第一個iPad項目:Hello, World! 38
3.4 在Xcode中創新建類 39
3.4.1 新類簡介 39
3.4.2 頭檔案 39
3.4.3 原始碼檔案 40
3.4.4 連結 42
3.5 Xcode的其他功能 42
3.5.1 使用Xcode添加框架 42
3.5.2 在Xcode中使用其他模板 42
3.5.3 Xcode提示和技巧 43
3.6 小結 44
第4章 使用Interface Builder 45
4.1 Interface Builder介紹 45
4.1.1 Interface Builder剖析 46
4.1.2 在Interface Builder中模擬 48
4.2 在Interface Builder中創建第一個項目:圖片和網頁 48
4.2.1 新建對象 48
4.2.2 操作圖形對象 49
4.2.3 使用檢查器視窗 49
4.2.4 使用圖片 51
4.3 在Interface Builder中建立連線 52
4.3.1 聲明IBOutlet 52
4.3.2 連線對象 53
4.3.3 使用IBOutlet編寫代碼 54
4.4 其他Interface Builder功能 55
4.4.1 建立其他連線 55
4.4.2 創建外部對象 55
4.4.3 初始化Interface Builder對象 56
4.4.4 訪問.xib檔案 56
4.4.5 新建.xib檔案 57
4.5 小結 57
第5章 創建基本視圖控制器 58
5.1 視圖控制器家族 58
5.2 標準視圖控制器 59
5.2.1 視圖控制器剖析 60
5.2.2 創建視圖控制器 60
5.2.3 創建另一個視圖控制器 60
5.2.4 構建視圖控制器界面 61
5.2.5 使用視圖控制器 62
5.3 表視圖控制器 66
5.3.1 剖析表視圖控制器 66
5.3.2 創建表視圖控制器 66
5.3.3 構建表界面 67
5.3.4 使用表視圖控制器 72
5.4 小結 73
第6章 監控事件和動作 74
6.1 事件簡介 74
6.1.1 回響者鏈 74
6.1.2 觸摸和事件 76
6.2 觸摸的例子:事件報告程式 77
6.2.1 在Interface Builder中構建應用程式 78
6.2.2 為觸摸準備視圖 79
6.2.3 控制事件 80
6.3 其他事件功能 82
6.3.1 規則化事件 82
6.3.2 其他事件方法和屬性 83
6.4 動作簡介 84
6.4.1 UIControl對象 84
6.4.2 控制項事件和動作 84
6.4.3 使用addTarget:action:forControlEvents:方法 86
6.5 向應用程式添加按鈕 86
6.5.1 使用addTarget:action:forControlEvents:與按鈕 87
6.5.2 使用IBAction與按鈕 87
6.6 其他動作功能 88
6.6.1 使用UITextField接受文本輸入 88
6.6.2 允許使用UISlider來選擇值 90
6.6.3 TextField/Slider組合 90
6.6.4 創建動作很容易 92
6.6.5 使用動作 92
6.7 通知簡介 92
6.8 小結 93
第7章 創建高級視圖控制器 94
7.1 標籤欄視圖控制器 94
7.1.1 剖析標籤欄視圖控制器 94
7.1.2 創建標籤欄控制器 95
7.1.3 構建標籤欄界面 97
7.1.4 使用標籤欄控制器 100
7.2 導航控制器 101
7.2.1 剖析導航控制器 101
7.2.2 創建導航控制器 102
7.2.3 完成導航控制器 102
7.2.4 使用導航控制器 106
7.3 使用翻轉控制器 108
7.4 分割視圖控制器 110
7.4.1 創建分割視圖控制器 110
7.4.2 構建分割視圖控制器 112
7.4.3 使用分割視圖控制器 115
7.4.4 為豎向模式和橫向模式調整界面 116
7.5 彈出式視圖控制器和模式視圖控制器 116
7.5.1 創建彈出式視圖控制器 117
7.5.2 創建模式視圖控制器 117
7.6 小結 118
第8章 數據:動作、首選項和檔案 119
8.1 接收用戶動作 119
8.2 管理用戶首選項 120
8.2.1 創建自己的首選項 121
8.2.2 使用系統設定 125
8.3 打開檔案 129
8.3.1 訪問軟體包 130
8.3.2 訪問其他目錄 131
8.3.3 操縱檔案 131
8.3.4 Filesaver:一個UITextView示例 132
8.4 小結 135
第9章 數據:高級技術 136
9.1 使用SQLite 136
9.1.1 設定SQLite資料庫 137
9.1.2 訪問SQLite 138
9.1.3 訪問SQLite資料庫 138
9.1.4 通過資料庫構建導航選單 139
9.1.5 本例的擴展 145
9.2 訪問地址簿 145
9.2.1 框架概述 145
9.2.2 訪問地址簿屬性 146
9.2.3 查詢地址簿 147
9.2.4 使用地址簿UI 149
9.3 Core Data簡介 153
9.3.1 關於Core Data的背景知識 153
9.3.2 在應用程式中設定Core Data 154
9.3.3 初始化Core Data對象 155
9.3.4 為資料庫添加對象 158
9.3.5 在Core Data中提取、更新和刪除對象 158
9.4 小結 160
第10章 定位:加速計、位置和羅盤 161
10.1 加速計和方向 161
10.1.1 orientation屬性 161
10.1.2 方向通知 162
10.2 加速計和移動 162
10.2.1 訪問UIAccelerometer 163
10.2.2 解析UIAcceleration 163
10.2.3 查看重力 164
10.2.4 查看移動 166
10.2.5 識別簡單的加速計移動 166
10.3 加速計和手勢 168
10.4 Core Location 170
10.4.1 位置類 171
10.4.2 使用位置和距離的示例 172
10.4.3 使用海拔的示例 174
10.4.4 使用羅盤 177
10.4.5 Core Location和網際網路 178
10.5 小結 178
第11章 媒體:圖像和照相機 179
11.1 圖像介紹 179
11.1.1 載入UIImage 180
11.1.2 繪製UIImageView 180
11.1.3 在UIKit中修改圖像 181
11.2 利用Core Graphics繪製簡單圖像 182
11.3 訪問照片 183
11.3.1 使用圖像選取器 183
11.3.2 拍照 184
11.3.3 保存到相冊 185
11.4 拼合:一個圖像例子 185
11.4.1 拼合視圖控制器 185
11.4.2 拼合臨時圖像視圖 189
11.4.3 拼合視圖 190
11.4.4 擴展這個例子 191
11.5 小結 191
第12章 媒體:音頻和錄音 192
12.1 播放iPod庫中的音頻 192
12.1.1 從iPod媒體庫中檢索音頻條目 192
12.1.2 獲取MPMediaItem的信息 194
12.1.3 使用MPMusicPlayerController播放媒體條目 194
12.1.4 示例:創建一個簡單的媒體播放器應用程式 196
12.2 錄製音頻 198
12.2.1 初始化音頻錄音器 198
12.2.2 控制音頻錄音器 199
12.2.3 回響AVAudioRecorder事件 200
12.3 手動播放聲音 201
12.3.1 初始化AVAudio Player 201
12.3.2 AVAudioPlayer Delegate 202
12.3.3 控制AVAudioPlayer 202
12.4 示例:創建一個簡單的音頻錄製/播放應用程式 203
12.4.1 創建一個基於視圖的應用程式 204
12.4.2 添加所需的框架 204
12.4.3 構建IBAction 204
12.4.4 創建界面 204
12.4.5 設定音頻錄音器並實現IBAction操作 205
12.5 錄製、播放和訪問視頻 206
12.6 小結 207
第13章 圖形:Quartz、Core Animation和OpenGL 209
13.1 Quartz 2D簡介 209
13.2 Quartz上下文 210
13.2.1 在UIView上繪製圖形 211
13.2.2 在點陣圖上繪製圖形 212
13.3 繪製路徑 213
13.3.1 結束路徑 214
13.3.2 創建可重用路徑 214
13.3.3 繪製矩形 215
13.4 設定圖形狀態 216
13.4.1 設定顏色 216
13.4.2 變換 217
13.4.3 設定裁剪路徑 219
13.4.4 其他設定 220
13.4.5 管理狀態 220
13.5 Quartz中的高級繪圖功能 220
13.5.1 繪製漸變 221
13.5.2 繪製圖像 222
13.5.3 繪製文字 223
13.5.4 未介紹的內容 224
13.6 示例:在圖片上繪圖 224
13.6.1 PhotoDraw視圖控制器 225
13.6.2 photodraw視圖 226
13.6.3 擴展示例 228
13.7 Core Animation簡介 229
13.7.1 Core Animation基礎 230
13.7.2 Core Animation入門 230
13.7.3 繪製簡單的隱式動畫 230
13.7.4 繪製簡單的顯式動畫 231
13.8 OpenGL簡介 232
13.9 小結 232
第14章 Web:Web視圖和網際網路協定 234
14.1 網際網路的層次結構 234
14.2 低層次聯網 234
14.3 使用URL 236
14.3.1 創建NSURL 236
14.3.2 構建NSURLRequest 237
14.3.3 手動操作HTML數據 238
14.4 使用UIWebView 238
14.4.1 調用Web視圖 239
14.4.2 管理Web視圖委託 239
14.4.3 縮略圖:一個Web視圖例子 240
14.5 解析XML 242
14.5.1 啟動NSXMLParser 242
14.5.2 充當委託 243
14.5.3 構建示例RSS閱讀器 244
14.5.4 海拔高度重讀:一個Core Location示例 248
14.6 提交給Web 250
14.6.1 手動提交 250
14.6.2 提交表單 251
14.7 訪問社交網路 252
14.7.1 使用Web協定 252
14.7.2 使用TouchJSON 253
14.8 小結 255
第15章 使用Game Kit進行P2P連線 256
15.1 Game Kit概述 256
15.2 使用對等點選取器創建P2P應用程式 257
15.2.1 使用蘋果公司的內置對等點選取器 257
15.2.2 實現GKSession Delegate方法 260
15.2.3 在對等點之間傳送和接收數據 261
15.3 示例:創建一個多人桌球遊戲 263
15.3.1 啟動GKTennis項目 264
15.3.2 創建頭檔案 264
15.3.3 創建桌球遊戲界面 265
15.3.4 遊戲初始化 266
15.3.5 建立對等點選取器並進行連線 267
15.3.6 實現send和receive方法 268
15.3.7 遊戲循環 270
15.3.8 用戶互動 273
15.4 小結 274
第16章 推送通知服務 275
16.1 什麼是推送通知 275
16.2 蘋果公司的推送通知系統概述 276
16.3 準備在應用程式中使用推送通知服務 277
16.3.1 設定應用程式證書 278
16.3.2 建立供應配置檔案 279
16.3.3 處理推送通知的代碼 279
16.3.4 準備音頻檔案 281
16.4 使用PHP創建一個推送通知提供程式 281
16.4.1 創建SSL證書 282
16.4.2 實現PHP推送通知提供程式 283
16.5 小結 284
第17章 Map Kit框架 285
17.1 Map Kit概述 285
17.2 向應用程式添加地圖 285
17.2.1 使用Interface Builder添加地圖 285
17.2.2 用編程方式添加地圖 287
17.2.3 控制地圖 287
17.3 翻譯地理編碼 289
17.4 標註地圖 290
17.4.1 添加基本地圖示注 291
17.4.2 添加自定義地圖示注 292
17.5 小結 296
第18章 使用Store Kit實現套用內購買 297
18.1 建立沙盒測試環境 297
18.1.1 創建iTunes測試用戶 298
18.1.2 添加產品 299
18.2 創建一個簡單的商店界面 301
18.3 小結 309
第19章 iPhone SDK增強功能 311
19.1 自定義鍵盤附屬檔案 311
19.1.1 擴展UITextField 312
19.1.2 實現自定義UIText Field 314
19.1.3 自定義鍵盤 314
19.2 繼續:iPhone 4.0 SDK 316
19.2.1 多任務 316
19.2.2 用戶體驗增強功能 317
19.2.3 多媒體框架增強功能 317
19.2.4 Game Center 317
19.3 小結 318
附錄A iPhone OS類參考 319
附錄B 外部資源和參考資料 322
附錄C 發布SDK程式 324
附錄D 針對iPad更新當前應用程式 327