《iOS開發指南:從零基礎到App Store上架 》是人民郵電出版社 出版的圖書。
基本介紹
- 書名:iOS開發指南:從零基礎到App Store上架
- 作者:關東升
- ISBN:9787115324443
- 類別:技術
- 定價:99.00
- 出版社:人民郵電出版社
- 出版時間:2013-7
- 裝幀:平裝
- 字數:1,338,000
- 頁數:658
內容介紹
作者介紹
作品目錄
第一部分 基礎篇
第1章 開篇綜述 2
1.1 iOS概述 2
1.1.1 iOS介紹 2
1.1.2 iOS 6新特性 2
1.2 開發環境及開發工具 3
1.3 本書中的約定 4
1.3.1 案例代碼約定 4
1.3.2 圖示的約定 5
第2章 第一個iOS應用程式 7
2.1 創建基於nib的HelloWorld工程 7
2.1.1 創建工程 7
2.1.2 Xcode中的iOS工程模板 10
2.1.3 套用剖析 11
2.2 基於故事板的HelloWorld工程 13
2.2.1 使用故事板重構HelloWorld 14
2.2.2 nib、xib與故事板 15
2.2.3 故事板中的Scene和Segue 16
2.3 套用生命周期 17
2.3.1 非運行狀態——套用啟動場景 18
2.3.2 點擊Home鍵——套用退出場景 19
2.3.3 掛起重新運行場景 20
2.3.4 記憶體清除——套用終止場景 21
2.4 視圖生命周期 21
2.4.1 視圖生命周期與視圖控制器關係 22
2.4.2 iOS 6 UI狀態保持和恢復 23
2.5 設定產品屬性 25
2.5.1 Xcode中的Project和Target 25
2.5.2 設定常用的產品屬性 27
2.6 iOS API簡介 29
2.6.1 API概述 29
2.6.2 如何使用API幫助 31
2.7 小結 33
第3章 iOS常用設計模式 34
3.1 單例模式 34
3.1.1 問題提出 34
3.1.2 實現原理 34
3.1.3 套用案例 35
3.2 委託模式 37
3.2.1 問題提出 37
3.2.2 實現原理 39
3.2.3 套用案例 41
3.3 觀察者模式 44
3.3.1 問題提出 44
3.3.2 實現原理 45
3.3.3 通知機制和KVO機制 47
3.4 MVC模式 53
3.4.1 MVC模式概述 53
3.4.2 Cocoa Touch中的MVC模式 54
3.5 小結 56
第4章 UIView與控制項 57
4.1 視圖“始祖”——UIView 57
4.1.1 UIView“家族” 57
4.1.2 套用界面的構建層次 59
4.1.3 視圖分類 60
4.2 標籤控制項和按鈕控制項 60
4.2.1 標籤控制項 61
4.2.2 按鈕控制項 61
4.2.3 動作和輸出口 63
4.3 TextField控制項和TextView控制項 66
4.3.1 TextField控制項 66
4.3.2 TextView控制項 67
4.3.3 鍵盤的打開和關閉 67
4.3.4 關閉和打開鍵盤的通知 68
4.3.5 鍵盤的種類 69
4.4 開關控制項、滑塊控制項和分段控制項 70
4.4.1 開關控制項 71
4.4.2 滑塊控制項 71
4.4.3 分段控制項 71
4.5 網頁控制項WebView 72
4.5.1 WebView介紹 72
4.5.2 使用WebView構建Hybrid套用 75
4.6 螢幕滾動控制項ScrollView 80
4.6.1 ScrollView屬性的設定 80
4.6.2 鍵盤與其他控制項的協同 84
4.7 等待相關的控制項與進度條 86
4.7.1 活動指示器ActivityIndicatorView 87
4.7.2 進度條ProgressView 88
4.8 警告框和操作表 88
4.8.1 警告框AlertView 89
4.8.2 操作表ActionSheet 90
4.9 工具列和導航欄 92
4.9.1 工具列 92
4.9.2 導航欄 94
4.10 螢幕布局 98
4.10.1 iPad與iPhone螢幕布局 98
4.10.2 絕對布局和相對布局 99
4.10.3 使用AutoLayout布局 102
4.10.4 旋轉你的螢幕 103
4.11 選擇器 108
4.11.1 日期選擇器 108
4.11.2 普通選擇器 110
4.11.3 數據源協定與委託協定 112
4.12 iOS 6中的集合視圖 113
4.12.1 集合視圖介紹 114
4.12.2 集合視圖單元格 116
4.12.3 數據源協定與委託協定 118
4.13 小結 119
第5章 表視圖 120
5.1 概述 120
5.1.1 表視圖的組成 120
5.1.2 表視圖的相關類 121
5.1.3 表視圖分類 122
5.1.4 單元格的組成和樣式 123
5.1.5 數據源協定與委託協定 124
5.2 簡單表視圖 125
5.2.1 創建簡單表視圖 125
5.2.2 自定義單元格 129
5.2.3 添加搜尋欄 133
5.3 分節表視圖 138
5.3.1 添加索引 138
5.3.2 分組與靜態表 141
5.4 修改單元格 144
5.4.1 刪除和插入單元格 144
5.4.2 移動單元格 150
5.5 表視圖UI設計模式 152
5.5.1 分頁模式 152
5.5.2 下拉刷新模式 152
5.5.3 iOS 6下拉刷新控制項 153
5.6 小結 155
第6章 視圖控制器與導航模式 156
6.1 概述 156
6.1.1 視圖控制器的種類 156
6.1.2 導航模式 156
6.1.3 模態視圖 157
6.2 平鋪導航 163
6.2.1 套用場景 163
6.2.2 基於分屏導航的實現 165
6.2.3 基於分頁導航的實現 168
6.3 標籤導航 173
6.3.1 套用場景 174
6.3.2 nib實現 174
6.3.3 故事板實現 179
6.4 樹形結構導航 182
6.4.1 套用場景 182
6.4.2 nib實現 183
6.4.3 故事板實現 189
6.5 組合使用導航模式 193
6.5.1 套用場景 193
6.5.2 故事板實現 194
6.6 小結 200
第7章 iPhone與iPad套用開發的差異 201
7.1 概述 201
7.1.1 套用場景差異 201
7.1.2 設計和開發需注意的問題 201
7.1.3 構建自適應的iPhone和iPad工程 204
7.2 iPad專用API 206
7.2.1 UIPopoverController控制器 206
7.2.2 UISplitViewController控制器 209
7.2.3 模態視圖專用屬性 215
7.3 Master-Detail應用程式模板 219
7.3.1 nib實現 220
7.3.2 故事板實現 225
7.4 Utility應用程式模板 228
7.4.1 nib實現 229
7.4.2 故事板實現 232
7.5 移動平台的分層架構設計 234
7.5.1 低耦合企業級系統架構設計 234
7.5.2 移動平台的分層架構設計 235
7.5.3 基於同一工程的分層 235
7.5.4 基於一個工作空間不同工程的分層 241
7.6 小結 244
第8章 應用程式設定 245
8.1 概述 245
8.1.1 設定 245
8.1.2 配置 246
8.2 應用程式設定包 247
8.3 設定項目種類 248
8.3.1 文本欄位 251
8.3.2 開關 253
8.3.3 滑塊 254
8.3.4 值列表 256
8.3.5 子界面 257
8.4 讀取設定 259
8.5 小結 260
第9章 應用程式本地化 261
9.1 概述 261
9.1.1 本地化內容 261
9.1.2 本地化目錄結構 263
9.2 文本信息本地化 263
9.2.1 系統按鈕和信息本地化 263
9.2.2 套用名稱本地化 265
9.2.3 程式代碼輸出的靜態文本本地化 266
9.2.4 使用genstring工具 268
9.3 nib和故事板檔案本地化 268
9.3.1 添加本地化 269
9.3.2 開關使用ibtool工具 270
9.4 資源檔案本地化 271
9.5 小結 273
第10章 數據持久化 274
10.1 概述 274
10.1.1 沙箱目錄 274
10.1.2 持久化方式 275
10.2 屬性列表 275
10.3 對象歸檔 280
10.4 使用SQLite資料庫 285
10.4.1 SQLite數據類型 285
10.4.2 創建資料庫 285
10.4.3 查詢數據 287
10.4.4 修改數據 290
10.5 Core Data 292
10.5.1 ORM 292
10.5.2 Core Data堆疊 293
10.5.3 建模和生成實體 296
10.5.4 採用Core Data分層架構設計 299
10.5.5 查詢數據 301
10.5.6 修改數據 302
10.6 小結 304
第11章 訪問通訊錄 305
11.1 概述 305
11.2 讀取聯繫人信息 306
11.2.1 查詢聯繫人記錄 307
11.2.2 讀取單值屬性 309
11.2.3 讀取多值屬性 311
11.2.4 讀取圖片屬性 313
11.3 寫入聯繫人信息 313
11.3.1 創建聯繫人 315
11.3.2 修改聯繫人 317
11.3.3 刪除聯繫人 318
11.4 高級API 319
11.4.1 選擇聯繫人 319
11.4.2 顯示和修改聯繫人 322
11.4.3 創建聯繫人 324
11.5 小結 328
第二部分 網路篇
第12章 訪問Web Service 330
12.1 概述 330
12.2 數據交換格式 330
12.2.1 XML文檔結構 332
12.2.2 解析XML文檔 333
12.2.3 JSON文檔結構 340
12.2.4 JSON數據解碼 341
12.3 REST Web Service 343
12.3.1 HTTP和HTTPS協定 343
12.3.2 同步GET請求方法 344
12.3.3 異步GET請求方法 348
12.3.4 POST請求方式 349
12.3.5 調用REST Web Service的插入、修改和刪除方法 350
12.4 使用ASIHTTPRequest框架 355
12.4.1 安裝和配置ASIHTTPRequest框架 355
12.4.2 同步請求 356
12.4.3 異步請求 358
12.4.4 使用請求佇列 359
12.4.5 上傳數據 362
12.5 反饋網路信息改善用戶體驗 364
12.5.1 iOS 6表視圖刷新控制項的使用 364
12.5.2 使用等待指示器控制項 367
12.5.3 使用網路等待指示器 369
12.6 小結 370
第13章 定位服務與地圖套用 371
13.1 定位服務 371
13.1.1 定位服務編程 371
13.1.2 地理信息反編碼 376
13.1.3 地理信息編碼查詢 377
13.1.4 關於定位服務的測試 379
13.2 使用iOS 6蘋果地圖 382
13.2.1 顯示地圖 382
13.2.2 添加標註 384
13.2.3 跟蹤用戶位置變化 387
13.3 使用程式外地圖 388
13.3.1 調用iOS 6蘋果地圖 388
13.3.2 調用谷歌Web地圖 391
13.4 小結 392
第三部分 進階篇
第14章 iOS中的商業模式 394
14.1 收費策略 394
14.1.1 iOS如何賺錢 394
14.1.2 避免定價策略誤區 395
14.1.3 免費軟體的藝術 395
14.1.4 在適當的時間、適當的地點植入廣告 395
14.1.5 嘗試不同的盈利模式 395
14.2 使用蘋果iAd廣告 396
14.2.1 橫幅廣告 396
14.2.2 插頁廣告 401
14.2.3 查看你的收入 406
14.3 使用谷歌AdMob廣告 408
14.3.1 註冊AdMob賬號和管理套用 408
14.3.2 下載谷歌AdMob Ads SDK和示例代碼 412
14.3.3 添加AdMob橫幅廣告 414
14.3.4 添加AdMob插頁廣告 418
14.3.5 為廣告提交用戶和位置信息 421
14.3.6 搜尋廣告 422
14.3.7 查看你的收入 424
14.4 套用內購買 425
14.4.1 概述 425
14.4.2 測試環境搭建 426
14.4.3 在程式中實現套用內購買 431
14.4.4 測試套用內購買 437
14.5 小結 439
第15章 找出程式中的bug——調試 440
15.1 Xcode調試工具 440
15.1.1 定位編譯錯誤 440
15.1.2 查看和顯示日誌 441
15.1.3 設定和查看斷點 442
15.1.4 調試工具列 446
15.1.5 輸出視窗 447
15.1.6 變數查看視窗 448
15.1.7 查看執行緒 449
15.2 日誌與斷言輸出 450
15.2.1 使用NSLog函式 450
15.2.2 使用NSAssert宏 451
15.2.3 移除NSLog和NSAssert 452
15.3 LLDB調試工具 455
15.3.1 斷點命令 455
15.3.2 觀察點命令 457
15.3.3 查看變數和計算表達式命令 458
15.4 異常堆疊報告分析 461
15.4.1 跟蹤異常堆疊 461
15.4.2 分析堆疊報告 463
15.5 在iOS設備上調試 464
15.5.1 創建開發者證書 465
15.5.2 設備註冊 468
15.5.3 創建App ID 470
15.5.4 創建配置概要檔案 471
15.5.5 設備調試 473
15.6 Xcode設備管理工具 474
15.6.1 管理設備配置概要檔案 474
15.6.2 查看設備上的應用程式 475
15.6.3 設備控制台 477
15.6.4 設備日誌 477
15.7 小結 479
第16章 基於測試驅動的iOS開發 480
16.1 測試驅動的軟體開發概述 480
16.1.1 測試驅動的軟體開發流程 480
16.1.2 測試驅動的軟體開發案例 481
16.1.3 iOS單元測試框架 486
16.2 使用OCUnit測試框架 486
16.2.1 添加OCUnit到工程中 486
16.2.2 套用測試和邏輯測試 489
16.2.3 編寫OCUnit測試方法 489
16.2.4 分析測試報告 494
16.3 使用GHUnit測試框架 495
16.3.1 添加GHUnit到工程 496
16.3.2 編寫GHUnit測試用例 498
16.3.3 分析測試報告 500
16.4 使用偽對象 502
16.4.1 添加OCMock到工程 503
16.4.2 使用OCMock對象 505
16.5 iOS單元測試最佳實踐 507
16.5.1 iOS單元測試策略 507
16.5.2 測試數據持久層 507
16.5.3 測試業務邏輯層 512
16.5.4 測試表示層 515
16.6 小結 522
第17章 讓你的程式“飛”起來——性能最佳化 523
17.1 記憶體最佳化 523
17.1.1 記憶體泄漏問題的解決 523
17.1.2 查找和解決殭屍對象 531
17.1.3 autorelease的使用問題 534
17.1.4 回響記憶體警告 534
17.1.5 選擇nib還是故事板 536
17.2 最佳化資源檔案 537
17.2.1 圖片檔案最佳化 537
17.2.2 音頻檔案最佳化 538
17.3 延遲載入 539
17.3.1 資源檔案的延遲載入 540
17.3.2 故事板和nib檔案的延遲載入 543
17.4 數據持久化的最佳化 546
17.4.1 使用檔案 546
17.4.2 使用SQLite資料庫 549
17.4.3 使用Core Data 550
17.5 可重用對象的使用 552
17.5.1 表視圖中的可重用對象 553
17.5.2 集合視圖中的可重用對象 554
17.5.3 地圖視圖中的可重用對象 555
17.6 並發處理與多核CPU 556
17.6.1 主執行緒阻塞問題 556
17.6.2 選擇NSThread還是GCD 557
17.7 編譯器和編譯參數 558
17.7.1 GCC、LLVM GCC與Apple LLVM比較 558
17.7.2 ARM架構 559
17.7.3 Optimization Level 561
17.8 小結 562
第18章 管理好你的程式代碼——代碼版本控制 563
18.1 概述 563
18.1.1 版本控制歷史 563
18.1.2 基本概念 564
18.2 Git代碼版本控制 564
18.2.1 伺服器搭建 564
18.2.2 Gitolite伺服器管理 566
18.2.3 Git常用命令 568
18.2.4 Git分支 570
18.2.5 Git協同開發 574
18.2.6 Xcode中Git的配置與使用 576
18.3 GitHub代碼託管服務 583
18.3.1 創建和配置GitHub賬號 584
18.3.2 創建代碼庫 586
18.3.3 派生代碼庫 589
18.3.4 使用GitHub協同開發 591
18.3.5 管理組織 596
18.4 小結 599
第19章 把你的套用放到App Store上 600
19.1 收官 600
19.1.1 添加圖示 600
19.1.2 添加啟動界面 602
19.1.3 調整Application Target屬性 604
19.1.4 為發布進行編譯 605
19.1.5 套用打包 609
19.2 發布流程 610
19.2.1 創建套用及基本信息 611
19.2.2 套用定價信息 612
19.2.3 最後信息輸入 613
19.2.4 上傳套用 616
19.3 常見審核不通過的原因 618
19.4 小結 619
第四部分 實戰篇
第20章 重構MyNotes套用——iOS網路通信中的設計模式與架構設計 622
20.1 行動網路通信套用的分層架構設計 622
20.2 基於委託模式實現 623
20.2.1 網路通信與委託模式 623
20.2.2 在異步網路通信中使用委託模式實現分層架構設計 623
20.2.3 類圖 624
20.2.4 時序圖 626
20.2.5 數據持久層的代碼實現 629
20.2.6 業務邏輯層的代碼實現 631
20.2.7 表示層的代碼實現 632
20.3 基於觀察者模式的通知機制實現 637
20.3.1 觀察者模式的通知機制回顧 637
20.3.2 異步網路通信中通知機制的分層架構設計 638
20.3.3 類圖 638
20.3.4 時序圖 639
20.3.5 數據持久層的代碼實現 642
20.3.6 業務邏輯層的代碼實現 643
20.3.7 表示層的代碼實現 644
20.4 小結 649
第21章 iOS敏捷開發項目實戰——2016里約熱內盧奧運會套用開發及App Store發布 650
21.1 套用分析與設計 650
21.1.1 套用概述 650
21.1.2 需求分析 650
21.1.3 原型設計 651
21.1.4 資料庫設計 652
21.1.5 架構設計 652
21.2 iOS敏捷開發 653
21.2.1 敏捷開發宣言 653
21.2.2 iOS適合敏捷開發? 654
21.2.3 iOS敏捷開發最佳實踐 654
21.3 任務1:創建套用基本工作空間 656
21.4 任務2:信息系統層與持久層開發 657
21.4.1 疊代2.1:編寫資料庫DDL腳本 657
21.4.2 疊代2.2:插入初始數據到資料庫 658
21.4.3 疊代2.3:編寫實體類 658
21.4.4 疊代2.4:DAO類GHUnit單元測試 659
21.4.5 疊代2.5:編寫DAO類 663
21.4.6 疊代2.6:發布到GitHub 666
21.5 任務3:業務邏輯層開發 667
21.5.1 疊代3.1:比賽項目業務邏輯類GHUnit單元測試 667
21.5.2 疊代3.2:編寫比賽項目業務邏輯類 668
21.5.3 疊代3.3:比賽日程業務邏輯類GHUnit單元測試 669
21.5.4 疊代3.4:編寫比賽日程業務邏輯類 670
21.5.5 疊代3.5:發布到GitHub 672
21.6 任務4:表示層開發 672
21.6.1 疊代4.1:根據原型設計初步設計iPad故事板 673
21.6.2 疊代4.2:根據原型設計初步設計iPhone故事板 674
21.6.3 疊代4.3:首頁模組 674
21.6.4 疊代4.4:比賽項目模組 675
21.6.5 疊代4.5:比賽日程模組 679
21.6.6 疊代4.6:倒計時模組表示層 681
21.6.7 疊代4.7:關於我們模組表示層 683
21.6.8 疊代4.8:發布到GitHub 683
21.7 任務5:收工 684
21.7.1 疊代5.1:添加圖示 684
21.7.2 疊代5.2:設計和添加啟動界面 684
21.7.3 疊代5.3:植入谷歌AdMob橫幅廣告 685
21.7.4 疊代5.4:性能測試與改善 686
21.7.5 疊代5.5:發布到GitHub 687
21.7.6 疊代5.6:在App Store上發布套用 687
21.8 小結 690