編輯推薦
創造銷售奇蹟的經典著作,針對iphone sdk3新特性全面改版,從這裡,擁抱軟體開發的未來。
Apple公司的iPhone開創了移動平台新紀元!而最新版iPhone 3做了不少改進,如強化應用程式對GPS的支持,還增加了眾多新功能,如全系統搜尋、支持複製和貼上、收發多媒體信息等。iPhone 3與App Store的絕配為全世界的程式設計師提供了一個施展才華的全新大舞台。只要有新奇的創意,你完全有可能像開發iShoot遊戲的Ethan Nicholas(日收入2萬多美元)和開發Trism遊戲的Steve Demeter(月收入超過10萬美元)那樣,單槍匹馬即可贏得全球市場,成功創業,改變自己的人生。
上一版英文原版問世以來在Amazon計算機圖書排行榜持續雄踞榜首。總排名一度在20名左右,被奉為經典。而中文版出版後也迅速榮登各大網店排行榜榜首,並創造了半年內印刷四次的銷售奇蹟。書中從至UApple網站註冊賬號,下載和安裝免費iPhone SDK開始,清晰透徹地講述了創建iPhone應用程式的全過程。作者在探討基本概念和各個關鍵特性(iPhone界面元素、數據保存、SQLite3、Quartz和OpenGL ES、手勢支持、本地化、Core Location等)時,提供了豐富的實例。更難得的是,本書始終強調iPhone開發中的各種最佳實踐,即使是有經驗的開發人員,也
會因此受益匪淺。本書新版針對iPhone SDK 3做了大幅修訂,力求使新老讀者都能覺得物有所值。作者在糾正上一版錯誤的基礎上,不僅更新了所有項目代碼,使之兼容新舊SDK,還新增了不少內容,進一步闡明一些讀者反饋的比較難懂的主題。此外,書中還為Core Data增加了一個新項目。
立即展卷閱讀。開始神奇的iPhone開發之旅吧。
內容簡介
iPhone是一種全新的移動平台,蘋果公司為它推出了強大的軟體開發工具包iPhone SDK。本書是一部關於iPhone SDK 3和iPhone 3開發的基礎教程,內容翔實、語言生動。書中結合消費類設備上常見的實例,循序漸進地講解了iPhone 3開發的基本流程,並介紹了最先進、時尚、受歡迎的iPhone 3新特性。
本書內容完整豐富,具有較強的通用性,編程領域中各層次讀者都能通過本書快速學習iPhone開發,提高相關技能。
作者簡介
Dave Mark 深受愛戴的Apple技術開發專家,具有多年開發經驗。他撰寫過許多Mac平台暢銷書,目前專注於iPhone技術圖書的寫作,包括本書姊妹篇《iPhone 3開發高級教程》(中文版即將由人民郵電出版社出版)。
目錄
第1章 歡迎來到iPhone的世界 1
1.1 關於本書 1
1.2 必要條件 1
1.3 必備知識 3
1.4 編寫iPhone應用程式有何不同 4
1.4.1 只有一個正在運行的應用程式 4
1.4.2 只有一個視窗 4
1.4.3 受限訪問 5
1.4.4 有限的回響時間 5
1.4.5 有限的螢幕大小 5
1.4.6 有限的系統資源5
1.4.7 不支持垃圾收集 6
1.4.8 新功能 6
1.4.9 與眾不同的方法 6
1.5 本書內容 6
1.6 本次更新的內容 7
1.7 準備開始吧 7
第2章 創建基本項目 8
2.1 在Xcode中設定項目 8
2.2 Interface Builder簡介 13
2.2.1 nib檔案的構成 14
2.2.2 在視圖中添加標籤 15
2.3 美化iPhone應用程式 17
2.4 小結 20
第3章 處理基本互動 21
3.1 MVC范型 21
3.2 創建項目 22
3.3 創建視圖控制器 22
3.3.1 輸出口 23
3.3.2 操作 24
3.3.3 將操作和輸出口添加到視圖控制器 24
3.3.4 將操作和輸出口添加到實現檔案 26
3.4 使用應用程式委託 30
3.5 編輯MainWindow.xib 33
3.6 編輯Button_FunViewController.xib 34
3.6.1 在Interface Builder中創建視圖 34
3.6.2 連線所有元素 36
3.6.3 測試 39
3.7 小結 39
第4章 更豐富的用戶界面 40
4.1 滿是控制項的螢幕 40
4.2 活動、靜態和被動控制項 42
4.3 創建應用程式 42
4.3.1 導入圖像 42
4.3.2 實現圖像視圖和文本欄位 43
4.3.3 添加圖像視圖 44
4.3.4 添加文本欄位 47
4.3.5 設定第二個文本欄位的屬性 50
4.3.6 連線輸出口 50
4.4 構建和運行 51
4.4.1 完成輸入後關閉鍵盤 51
4.4.2 通過觸摸背景關閉鍵盤 52
4.5 實現滑塊和標籤 54
4.5.1 確定輸出口 54
4.5.2 確定操作 54
4.5.3 添加輸出口和操作 54
4.5.4 添加滑塊和標籤 55
4.5.5 連線操作和輸出口 56
4.6 實現開關、按鈕和分段控制項 57
4.6.1 確定輸出口 57
4.6.2 確定操作 57
4.6.3 添加開關、按鈕和分段控制項 59
4.6.4 連線開關輸出口和操作 60
4.6.5 添加按鈕 61
4.7 實現操作表和警報 62
4.7.1 遵從操作表委託方法 62
4.7.2 顯示操作表 62
4.7.3 操作表委託和創建警報 64
4.8 美化按鈕 66
4.8.1 viewDidLoad方法 66
4.8.2 控制項狀態 67
4.8.3 可拉伸圖像 67
4.9 成為出色的記憶體使用者 67
4.10 小結 68
第5章 自動旋轉和自動調整大小 70
5.1 使用自動調整屬性處理旋轉 71
5.1.1 指定旋轉支持 71
5.1.2 使用自動調整屬性設計界面 73
5.1.3 自動調整屬性 74
5.1.4 設定按鈕的自動調整屬性 75
5.2 在旋轉時重構視圖 76
5.2.1 聲明和連線輸出口 77
5.2.2 在旋轉時移動按鈕 77
5.3 切換視圖 79
5.3.1 確定輸出口 80
5.3.2 確定動作 80
5.3.3 聲明動作和輸出口 80
5.3.4 設計兩個視圖 81
5.3.5 實現交換和動作 82
5.4 小結 84
第6章 多視圖應用程式 85
6.1 View Switcher應用程式 87
6.2 多視圖應用程式的體系結構 88
6.3 構建View Switcher 88
6.3.1 創建視圖控制器和nib檔案 89
6.3.2 修改應用程式委託 91
6.3.3 SwitchViewController.h 92
6.3.4 修改MainWindow.xib 92
6.3.5 編寫SwitchViewController.m 95
6.3.6 實現內容視圖 98
6.4 製作轉換動畫 101
6.5 小結 103
第7章 標籤欄與選取器 104
7.1 Pickers應用程式 104
7.2 委託和數據源 106
7.3 建立工具列框架 106
7.3.1 創建檔案 107
7.3.2 添加根視圖控制器 108
7.4 實現日期選取器 112
7.5 實現單個組件選取器 114
7.5.1 聲明輸出口和操作 114
7.5.2 構建視圖 115
7.5.3 將控制器實現為數據源和委託 115
7.6 實現多組件選取器 120
7.6.1 聲明輸出口和操作 120
7.6.2 構建視圖 120
7.6.3 實現控制器 121
7.7 實現獨立組件 123
7.8 使用自定義選取器創建簡單遊戲 130
7.8.1 編寫控制器頭檔案 130
7.8.2 構建視圖 130
7.8.3 添加圖像資源 131
7.8.4 實現控制器 131
7.8.5 spin方法 134
7.8.6 viewDidLoad方法 135
7.8.7 最後的細節 137
7.8.8 連結Audio Toolbox框架 140
7.9 小結 141
第8章 表視圖簡介 142
8.1 表視圖基礎 142
8.2 實現一個簡單的表 145
8.2.1 設計視圖 145
8.2.2 編寫控制器 146
8.3 添加一個圖像 149
8.4 附加配置 151
8.4.1 設定縮進級別 152
8.4.2 處理行的選擇 152
8.4.3 更改字型大小和行高 154
8.4.4 委託還能做什麼 155
8.5 定製表視圖單元 155
8.5.1 單元應用程式 155
8.5.2 向表視圖單元添加子視圖 156
8.5.3 使用UITableViewCell的自定義子類 159
8.6 分組分區和索引分區 163
8.6.1 構建視圖 163
8.6.2 導入數據 164
8.6.3 實現控制器 164
8.6.4 添加索引 168
8.7 實現搜尋欄 168
8.7.1 重新考慮設計 168
8.7.2 深層可變副本 169
8.7.3 更新控制器頭檔案 170
8.7.4 修改視圖 171
8.7.5 修改控制器實現 173
8.8 小結 183
第9章 導航控制器和表視圖 184
9.1 導航控制器 184
9.1.1 棧的性質 184
9.1.2 控制器棧 185
9.2 由6個部分組成的分層應用程式:Nav 185
9.3 構建Nav應用程式的骨架 188
9.3.1 創建第一級視圖控制器 188
9.3.2 設定導航控制器 189
9.4 第一個子控制器:展示按鈕視圖 194
9.5 第二個子控制器:校驗表 201
9.6 第三個子控制器:表行上的控制項 205
9.7 第四個子控制器:可移動的行 211
9.7.1 編輯模式 211
9.7.2 創建一個新的二級控制器 212
9.8 第五個子控制器:可刪除的行 217
9.9 第六個子控制器:可編輯的詳細窗格 222
9.9.1 創建數據模型對象 222
9.9.2 創建控制器 224
9.9.3 創建詳細視圖控制器 227
9.10 其他內容 240
9.11 小結 243
第10章 應用程式設定和用戶默認設定 244
10.1 設定束 244
10.2 AppSettings應用程式 245
10.3 創建項目 247
10.4 使用設定束 248
10.4.1 在項目中添加設定束 248
10.4.2 設定屬性列表 249
10.4.3 添加文本欄位設定 250
10.4.4 添加安全文本欄位設定 252
10.4.5 添加多值欄位 252
10.4.6 添加撥動開關設定 253
10.4.7 添加滑塊設定 254
10.4.8 添加子設定視圖 255
10.5 讀取應用程式中的設定 256
10.6 更改應用程式中的默認設定 260
10.7 小結 263
第11章 基本數據持久性 264
11.1 應用程式的沙盒 264
11.1.1 獲取Documents目錄 265
11.1.2 獲取tmp目錄 266
11.2 檔案保存策略 266
11.2.1 單個檔案持久性 266
11.2.2 多個檔案持久性 267
11.3 持久保存應用程式數據 267
11.4 持久性應用程式 268
11.4.1 創建持久性項目 269
11.4.2 設計持久性應用程式視圖 269
11.4.3 編輯持久性類 270
11.4.4 對模型對象進行歸檔 273
11.4.5 實現NSCopying 275
11.5 歸檔應用程式 276
11.5.1 實現FourLines類 277
11.5.2 實現PersistenceView-Controller類 278
11.6 使用iPhone的嵌入式SQLite3 280
11.7 使用Core Data 289
11.7.1 實體和託管對象 291
11.7.2 鍵/值編碼 292
11.7.3 在上下文中結合它們 292
11.7.4 創建新託管對象 293
11.7.5 檢索託管對象 293
11.7.6 設計數據模型 294
11.7.7 創建持久視圖和控制器 297
11.7.8 將持久視圖控制器設定為應用程式的根控制器 302
11.8 小結 303
第12章 使用Quartz和OpenGL繪圖 304
12.1 圖形世界的兩個視圖 304
12.2 本章的繪圖應用程式 305
12.3 Quart繪圖方法 305
12.3.1 Quartz 2D的圖形上下文305
12.3.2 坐標系 306
12.3.3 指定顏色 307
12.3.4 在上下文中繪製圖像 308
12.3.5 繪製形狀:多邊形、直線和曲線309
12.3.6 Quartz 2D工具示例:模式、梯度、虛線模式 309
12.4 構建QuartzFun應用程式 309
12.4.1 創建隨機顏色 310
12.4.2 定義應用程式常量 311
12.4.3 實現QuartzFunView框架 312
12.4.4 向視圖控制器中添加輸出口和操作 314
12.4.5 更新QuartzFunViewContro-ller.xib 316
12.4.6 繪製直線 317
12.4.7 繪製矩形和橢圓形 319
12.4.8 繪製圖像 320
12.4.9 最佳化QuartzFun應用程式 322
12.5 一些OpenGL ES基礎知識 325
12.5.1 構建GLFun應用程式 326
12.5.2 設計Nib、添加框架、運行應用程式 335
12.6 小結 335
第13章 輕擊、觸摸和手勢 336
13.1 多觸摸術語 336
13.2 回響者鏈 337
13.3 多觸摸體系結構 338
13.4 觸摸瀏覽器應用程式 339
13.5 Swipes應用程式 342
13.6 實現多個輕掃動作 345
13.7 檢測多次輕擊 347
13.8 檢測捏合操作 351
13.9 自己定義手勢 354
13.10 小結 358
第14章 使用Core Location定位功能 359
14.1 位置管理器 359
14.1.1 設定所需的精度 360
14.1.2 設定距離篩選器 360
14.1.3 啟動位置管理器 360
14.1.4 更明智地使用位置管理器 360
14.2 位置管理器委託 361
14.2.1 獲取位置更新361
14.2.2 使用CLLocation獲取緯度和經度 361
14.2.3 錯誤通知 362
14.3 嘗試使用Core Location 363
14.3.1 更新位置管理器 367
14.3.2 確定移動距離 367
14.4 小結 368
第15章 加速計 369
15.1 加速計物理學 369
15.2 訪問加速計 370
15.2.1 UIAcceleration 370
15.2.2 實現accelerometer: didAccelerate:方法 371
15.3 搖動與擊碎 373
15.3.1 用於擊碎的代碼 373
15.3.2 載入模擬檔案 376
15.3.3 完好如初——復原觸摸 377
15.4 滾彈珠程式 377
15.4.1 實現Ball View控制器 378
15.4.2 編寫Ball View 379
15.4.3 計算小球運動 382
15.5 小結 385
第16章 iPhone照相機和照片庫 386
16.1 使用圖像選取器和UIImagePicker-Controller 386
16.2 實現圖像選取器控制器委託 387
16.3 實際測試照相機和庫 389
16.3.1 設計界面 390
16.3.2 實現照相機視圖控制器 390
16.4 小結 394
第17章 應用程式本地化 395
17.1 本地化體系結構 395
17.2 使用字元串檔案 396
17.3 現實中的iPhone:本地化應用程式 398
17.3.1 查看當前區域設定 401
17.3.2 測試LocalizeMe 401
17.3.3 本地化nib檔案 402
17.3.4 查看本地化的項目結構 403
17.3.5 本地化圖像 405
17.3.6 本地化應用程式圖示406
17.3.7 生成和本地化字元串檔案 406
17.4 小結 409
第18章 未來之路 410
18.1 別陷進單一的思路里 410
18.1.1 蘋果公司的文檔 410
18.1.2 郵件列表 411
18.1.3 論壇 411
18.1.4 網站 411
18.1.5 部落格 412
18.1.6 Dave和Jeff的部落格及Twitter 412
18.1.7 參考圖書 412
18.1.8 如果仍未解決問題 412
18.2 再會 412