基本信息
作者: (美)Brandon Trebitowski Christopher Allen 譯者: 張波 陳寶國 高偉
叢書名: 圖靈程式設計叢書
出版社:人民郵電出版社
ISBN:9787115248589
上架時間:2011-3-1
出版日期:2011 年3月
開本:16開
內容簡介
《iphone與ipad開發實戰》旨在以教程的形式講解如何使用本地iphone sdk 進行iphone/ipad 開發。首先介紹了objective-c、xcode、interface builder、視圖控制器、標準事件和動作模型等基礎知識,接著介紹了一些數據訪問方法與出色的硬體功能(加速計、gps 和羅盤),然後討論了媒體、音頻、圖形、網際網路等主題,最後通過實例展示了如何使用game kit 框架、推送通知、map kit 框架和store kit 框架等。
《iphone與ipad開發實戰》適合所有iphone 和ipad 開發人員閱讀。
摘要
本書旨在以教程的形式講解如何使用本地iPhone SDK 進行iPhone/iPad 開發。首先介紹了Objective-C、Xcode、Interface Builder、視圖控制器、標準事件和動作模型等基礎知識,接著介紹了一些數據訪問方法與出色的硬體功能(加速計、GPS 和羅盤),然後討論了媒體、音頻、圖形、網際網路等主題,最後通過實例展示了如何使用Game Kit 框架、推送通知、Map Kit 框架和Store Kit 框架等。
本書適合所有iPhone 和iPad 開發人員閱讀。
前言
開始編寫《iPhone開發實戰》修訂版的時候,Shannon和Christopher手頭上正好還有其他項目。於是Manning出版社決定另尋一名作者來完成所需的更新。最後,他們在Twitter上發現了我。
還在上高三的時候,我就已經開始學習編程,並花費大量時間編寫Web應用程式和一些冒傻氣的Java遊戲。高中畢業後,我進入新墨西哥大學,並在那裡獲得了計算機科學理學學士學位。
當蘋果公司推出最初的iPhone時,我非常渴望擁有一台。但直到蘋果公司將iPhone 3G投入市場,我才攢夠錢圓了自己的奢望那時候,我還買不起iPhone。因為大學時已經習慣了閱讀Java文檔,所以我能從蘋果公司的API文檔中學到很多東西。
接手撰寫本書的任務後,我很快意識到上一版中的不少章都應該刪掉。儘管Web套用是iPhone套用發展前期一個極為重要的組成部分,但它們現在已經無法與本機應用程式抗衡了。因此,我刪除了上一版中有關Web開發的那些章,添加了與最新的iPhone SDK特性有關的新內容。
剛完成此書時,蘋果公司發布了其最新設備——iPad。於是Manning出版社和我必須作出選擇:要么在現有書稿基礎上再奮鬥幾個月的時間,要么出版一本剛上架就過時的書。幸好我們選擇了前者。
——Brandon Trebitowsk
目錄
《iphone與ipad開發實戰》
第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