iOS 開發指南:從Hello World到App Store上架(第4版) iOS开发指南 从Hello World到App Store上架 第4版

關東升

  • 出版商: 人民郵電
  • 出版日期: 2016-06-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • 頁數: 802
  • 裝訂: 平裝
  • ISBN: 7115423180
  • ISBN-13: 9787115423184
  • 相關分類: Apple Developer

下單後立即進貨 (約4週~6週)

買這商品的人也買了...

相關主題

商品描述

<內容介紹>

本書是iOS開發傑出指南,分5部分講解如何從零起步編寫並上線iOS應用。首部分介紹iOS開發基礎知識,包括界面構建技術、基本控件、協議、表視圖、屏幕適配、導航、分屏多任務等。第二部分介紹設計與架構的相關知識,包括設計模式、分層模式、本地數據持久化等。第三部分為進階篇,包括設置與配置、本地化、Contacts與ContactsUI框架、數據交換格式、Web Service、定位服務、蘋果地圖等內容。第四部分介紹測試、調試和優化等相關知識。第五部分為實戰篇,涵蓋代碼版本管理、項目依賴管理、App Store發布流程,以及兩個真實iOS應用的分析設計、編程、測試與分佈過程。本書同時提供Swift和Objective-C兩版代碼。


<章節目錄>

第一部分基礎篇
第1章開篇綜述2
1.1 iOS概述2
1.1.1 iOS介紹2
1.1.2 iOS 9新特性2
1.2開發環境及開發工具3
1.3本書約定4
1.3.1案例代碼約定4
1.3. 2圖示的約定5
1.3.3方法命名約定6
1.3.4構造函數命名約定7
1.3.5錯誤處理約定8
第2章第一個iOS應用程序10
2.1創建HelloWorld工程10
2.1.1創建工程10
2.1 .2 Xcode中的iOS工程模板14
2.1.3應用剖析15
2.2應用生命週期17
2.2.1非運行狀態——應用啟動場景19
2.2.2點擊Home鍵——應用退出場景20
2.2.3掛起重新運行場景22
2.2.4內存清除:應用終止場景23
2.3設置產品屬性23
2.3.1 Xcode中的工程和目標23
2.3.2設置常用的產品屬性26
2.4 iOS API簡介27
2.4.1 API概述27
2.4. 2如何使用API幫助29
2.5小結32
第3章Cocoa Touch框架與構建應用界面33
3.1視圖控制器33
3.1.1視圖控制器種類33
3.1.2視圖的生命週期33
3.2視圖35
3.2.1 UIView繼承層次結構35
3.2.2視圖分類37
3.2.3應用界面構建層次37
3.3使用故事板構建界面38
3.3.1什麼是故事板39
3.3.2場景和過渡41
3.4使用XIB文件構建界面42
3.4.1重構HelloWorld 42
3.4.2 XIB與故事板比較45
3.5使用純代碼構建界面45
3.5.1重構HelloWorld 46
3.5.2視圖的幾個重要屬性47
3.6 3種構建界面技術討論49
3.6.1所見即所得49
3.6.2原型驅動開發49
3.6.3團隊協同開發49
3.7小結50
第4章UIView與視圖51
4.1標籤與按鈕51
4.1.1 Interface Builder實現51
4.1.2代碼實現55
4.2事件處理56
4.2.1 Interface Builder實現56
4.2.2代碼實現59
4.3訪問視圖60
4.3.1 Interface Builder實現60
4.3.2代碼實現62
4.4 TextField和TextView 63
4.4.1 Interface Builder實現64
4.4.2代碼實現65
4.4.3鍵盤的打開和關閉67
4.4.4關閉和打開鍵盤的通知68
4.4.5鍵盤的種類69
4.5開關控件、分段控件和滑塊控件70
4.5.1開關控件71
4.5.2分段控件72
4.5.3滑塊控件74
4.6 Web視圖:WKWebView類76
4.7警告框和操作表80
4.7.1 UIAlertController實現警告框81
4.7.2 UIAlertController實現操作表83
4.8等待相關的控件與進度條84
4.8.1活動指示器ActivityIndi​​catorView 85
4.8.2進度條ProgressView 87
4.9工具欄和導航欄90
4.9.1工具欄90
4.9.2導航欄94
4.10小結98
第5章委託協議、數據源協議與高級視圖99
5.1視圖中的委託協議和數據源協議99
5.2選擇器99
5.2.1日期選擇器99
5.2.2普通選擇器104
5.2.3數據源協議與委託協議109
5.3集合視圖111
5.4實例:Interface Builder實現奧運會比賽
項目112
5.4.1添加集合視圖113
5.4.2添加集合視圖單元格114
5.4.3數據源協議與委託協議118
5.5實例:代碼實現奧運會比賽項目120
5.5.1添加集合視圖120
5.5.2自定義集合視圖單元格122
5.6小結123
第6章表視圖124
6.1概述124
6.1.1表視圖的組成124
6.1.2表視圖的相關類125
6.1.3表視圖分類125
6.1.4單元格的組成和樣式127
6.1.5數據源協議與委託協議129
6.2簡單表視圖129
6.2.1實現協議方法130
6.2.2 UIViewController根視圖控制器130
6.2.3 UITableViewController根視圖
控制器137
6.3自定義表視圖單元格140
6.3.1 Interface Builder實現141
6.3. 2代碼實現145
6.4添加搜索欄146
6.5分節表視圖150
6.5.1添加索引150
6.5.2分組153
6.6靜態表與界面佈局154
6.7插入和刪除單元格160
6.7.1 Interface Builder實現162
6.7.2代碼實現167
6.8移動單元格169
6.9表視圖UI設計模式171
6.9.1分頁模式171
6.9.2下拉刷新模式171
6.9.3下拉刷新控件172
6.10小結174
第7章界面佈局與屏幕適配175
7.1界面佈局概述175
7.2 iOS界面佈局設計模式176
7.2.1表單佈局模式176
7.2.2列表佈局模式176
7.2.3網格佈局模式177
7.3傳統佈局技術177
7.4 Auto Layout佈局技術179
7.4.1 Interface Builder中管理Auto Layout
約束179
7.4.2實例:Auto Layout佈局180
7.5 iOS 9堆視圖StackView 185
7.5.1堆視圖與佈局185
7.5.2實例:堆視圖佈局186
7.6 iOS屏幕的多樣性191
7.6.1 iOS屏幕介紹191
7.6.2 iOS的3種分辨率192
7.6.3獲得iOS設備屏幕信息193
7.7 Size Class與iOS多屏幕適配194
7.7.1 Interface Builder中使用Size Class 195
7.7.2 Size Class的九宮格195
7.7. 3實例:使用Size Class 196
7.8資源目錄與圖片資源適配201
7.9小結204
第8章視圖控制器與導航模式205
8.1概述205
8.1.1視圖控制器的種類205
8.1.2導航模式205
8.2模態視圖207
8.2.1 Interface Builder實現208
8.2.2代碼實現214
8.3平鋪導航215
8.3.1應用場景215
8.3.2基於分屏導航的實現217
8.3.3基於電子書導航的實現223
8.4標籤導航228
8.4.1應用場景229
8.4.2 Interface Builder實現230
8.4.3代碼實現234
8.5樹形結構導航235
8.5.1應用場景235
8.5.2 Interface Builder實現236
8.5.3代碼實現244
8.6組合使用導航模式245
8.6.1應用場景246
8.6.2 Interface Builder實現246
8.6.3代碼實現254
8.7小結257
第9章iPad應用開發258
9.1 iPad與iPhone應用開發的差異258
9.1.1應用場景不同258
9.1.2導航模式不同258
9.1.3 API不同258
9.2 iPad樹形結構導航259
9.2.1郵件應用中的樹形結構導航259
9.2.2 Master-Detail應用程序模板260
9.2.3 Interface Builder實現SplitViewSample案例266
9.2.4代碼實現SplitViewSample案例270
9.3 iPad模態視圖273
9.3.1郵件應用中的模態導航273
9.3.2 iPad模態導航相關API 275
9.3.3 Interface Builder實現ModalView-
Sample案例277
9.3.4代碼實現ModalViewSample案例281
9.4 Popover(浮動層)視圖284
9.4.1 Popover相關API 284
9.4.2 PopoverViewSample案例285
9.5 iOS 9分屏多任務289
9.5.1 Slide Over多任務289
9.5.2分屏視圖多任務290
9.5.3畫中畫多任務293
9.6 iPad分屏多任務適配開發293
9.6.1分屏多任務前提條件293
9.6.2分屏多任務適配294
9.7小結295
第二部分設計與架構篇
第10章iOS常用設計模式298
10.1單例模式298
10.1.1問題提出298
10.1.2 Objective-C實現原理298
10.1.3 Swift實現原理299
10.1.4應用案例300
10.2委託模式301
10.2.1問題提出301
10.2.2實現原理303
10.2.3應用案例306
10.3觀察者模式309
10.3.1問題提出309
10.3.2實現原理310
10.3.3通知機制和KVO機制311
10.4再談MVC模式317
10.4.1 MVC模式概述317
10.4.2 Cocoa Touch中的MVC模式318
10.5小結320
第11章iOS分層架構設計321
11.1低耦合企業級系統架構設計321
11.2 iOS分層架構設計322
11.2.1工程與工作空間322
11.2.2靜態鏈接庫323
11.2.3框架323
11.2.4 16種分層模式324
11.3實例:MyNotes應用325
11.4基於同一工程的分層327
11.4.1採用純Swift語言實現:PSSS
模式327
11.4.2採用純Objective-C語言實現:
POOO模式330
11.4.3採用Swift調用Objective-C的
混合搭配實現:PSOO模式334
11.5基於同一工作空間靜態鏈接庫實現的WLSOO
模式335
11.5.1使用工作空間335
11.5.2添加數據持久層工程336
11.5.3建立業務邏輯層與數據持久層依賴
關係337
11.5.4建立表示層與業務邏輯層依賴
關係339
11.6基於同一工作空間框架實現的WFSSS
模式339
11.6.1創建框架工程340
11.6.2建立依賴關係341
11.6.3代碼重構342
11.7基於同一工作空間框架實現的WFOOO
模式344
11.7.1設置Public頭文件344
11.7.2設置保護傘頭文件345
11.7.3代碼重構345
11.8基於同一工作空間框架實現的WFSOO
模式346
11.8.1設置Public頭文件346
11.8.2設置保護傘頭文件346
11.8.3建立表示層與業務邏輯層依賴
關係346
11.8.4代碼重構346
11.9基於同一工作空間框架實現的WFOSS
模式346
11.9.1設置Public頭文件346
11.9.2設置Swift代碼嵌入應用347
11.9.3代碼重構347
11.10基於同一個工程不同目標框架實現的
TFSOO模式348
11.10.1使用目標348
11.10.2添加框架目標348
11.11小結349
第12章數據持久化350
12.1概述350
12.1.1沙箱目錄350
12.1.2持久化方式351
12.2屬性列表351
12.3對象歸檔357
12.4使用SQLite數據庫361
12.4.1 SQLite數據類型361
12.4. 2配置Objective-C框架工程環境362
12.4.3配置Swift框架工程環境362
12.4.4創建數據庫364
12.4.5查詢數據365
12.4.6修改數據368
12.5 Core Data 370
12.5.1 ORM 370
12.5.2 Core Data棧371
12.5.3建模和生成實體374
12.5.4採用Core Data分層架構設計380
12.5.5查詢數據382
12.5.6修改數據384
12.6小結385
第三部分進階篇
第13章應用程序設置388
13.1概述388
13.1.1設置388
13.1.2配置389
13.2應用程序設置包390
13.3設置項目種類392
13.3.1文本字段395
13.3.2開關398
13.3.3滑塊399
13.3.4值列表400
13.3.5子界面401
13.4讀取設置403
13.5小結405
第14章本地化406
14.1概述406
14.1.1需要本地化的內容406
14.1.2本地化目錄結構409
14.2文本信息本地化410
14.2.1系統按鈕和信息本地化410
14.2.2應用名稱本地化411
14.2.3程序代碼輸出的靜態文本本地化413
14.2.4使用genstring工具414
14.3故事板和XIB文件本地化415
14.3.1使用Base Internationalization技術415
14.3.2 Auto Layout與本地化417
14.4資源文件本地化419
14.4.1圖片資源文件本地化419
14.4.2聲音資源文件本地化420
14.5小結421
第15章iOS 9中訪問通訊錄422
15.1通訊錄的安全訪問設置422
15.2使用Contacts框架讀取聯繫人信息423
15.2.1查詢聯繫人423
15.2.2讀取單值屬性426
15.2.3讀取多值屬性428
15.2.4讀取圖片屬性430
15.3使用Contacts框架寫入聯繫人信息430
15.3.1創建聯繫人431
15.3.2修改聯繫人433
15.3.3刪除聯繫人434
15.4使用系統提供界面435
15.4.1選擇聯繫人435
15.4.2顯示和修改聯繫人438
15.4.3創建聯繫人441
15.5小結444
第16章數據交換格式445
16.1 XML數據交換格式446
16.1.1 XML文檔結構446
16.1.2解析XML文檔447
16.2實例:MyNotes應用XML 448
16.2.1使用NSXML解析450
16.2. 2使用TBXML解析453
16.3 JSON數據交換格式459
16.3.1 JSON文檔結構459
16.3.2 JSON數據編碼/解碼460
16.4實例:MyNotes應用JSON解碼461
16.5小結462
第17章REST Web Service 463
17.1概述463
17.2使用NSURLSession 464
17.2.1 NSURLSession API 464
17.2.2簡單會話實現GET請求465
17.2.3默認會話實現GET請求468
17.2.4實現POST請求469
17.2.5下載數據470
17.3實例:使用NSURLSession重構MyNotes
案例473
17.3 .1插入方法調用473
17.3.2修改方法調用474
17.3.3刪除方法調用475
17.4使用AFNetworking框架477
17.4.1比較ASIHTTPRequest、
AFNetworking和MKNetworkKit 477
17.4.2安裝和配置AFNetworking框架478
17.4.3實現GET請求479
17.4.4實現POST請求480
17.4.5下載數據481
17.4.6上傳數據482
17.5使用為Swift設計的網絡框架:
Alamofire 484
17.5.1安裝和配置Alamofire框架484
17.5.2實現GET請求485
17.5.3實現POST請求486
17.5.4下載數據487
17.5.5上傳數據488
17.6反饋網絡信息改善用戶體驗489
17.6.1使用下拉刷新控件改善用戶體驗489
17.6.2使用活動指示器控件492
17.6.3使用網絡活動指示器494
17.7小結494
第18章定位服務495
18.1定位服務概述495
18.1.1定位服務編程496
18.1.2測試定位服務499
18.2管理定位服務503
18.2.1應用啟動與停止下的定位服務
管理504
18.2 .2視圖切換下的定位服務管理504
18.2.3應用前後台切換下的定位服務
管理505
18.2.4設置自動暫停位置服務507
18.2.5 iOS 9後台位置服務管理507
18.3地理信息編碼與反編碼508
18.3.1地理信息反編碼508
18.3.2實例:地理信息反編碼509
18.3.3地理信息編碼查詢510
18.3.4實例:地理信息編碼查詢510
18.4微定位技術iBeacon 512
18.4.1微定位與地理圍欄512
18.4.2 iBeacon技術概述512
18.4.3實例:使用iBeacon技術實現微
定位513
18.5小結519
第19章蘋果地圖應用520
19.1使用iOS蘋果地圖520
19.1.1顯示地圖520
19.1.2顯示3D地圖524
19.2添加標註525
19.2.1實現查詢526
19.2.2在地圖上添加標註528
19.3跟蹤用戶位置變化529
19.4使用程序外地圖530
19.5小結533
第四部分測試、調試和優化篇
第20章找出程序中的bug——調試536
20.1 Xcode調試工具536
20.1.1定位編譯錯誤536
20.1.2查看和顯示日誌537
20.1.3設置和查看斷點539
20.1.4調試工具544
20.1.5輸出窗口545
20.1.6變量查看窗口546
20.1.7查看線程547
20.2 LLDB調試工具548
20.2.1斷點命令548
20.2.2觀察點命令550
20.2.3查看變量和計算表達式命令552
20.3日誌與斷言輸出554
20.3.1使用NSLog函數554
20.3.2使用斷言555
20.4異常棧報告分析556
20.4.1跟蹤異常棧556
20.4.2分析棧報告558
20.5在iOS設備上調試559
20.5.1 Xcode設置559
20.5.2設備設置560
20.6 Xcode設備管理工具562
20.6.1查看設備上的應用程序562
20.6.2設備日誌564
20.7小結564
第21章iOS測試驅動與單元測試565
21.1測試驅動的軟件開發概述565
21.1.1測試驅動的軟件開發流程565
21.1.2測試驅動的軟件開發案例566
21.1.3 iOS單元測試框架567
21.2使用XCTest測試框架568
21.2.1添加XCTest到工程568
21.2.2 Swift版本中設置編譯目標成員570
21.2.3編寫XCTest測試方法570
21.2.4運行測試用例目標573
21.2.5分析測試報告575
21.3異步單元測試576
21.4性能測試580
21.4.1 Swift版本中配置測試環境580
21.4.2測試用例代碼580
21.4.3分析測試結果581
21.5 iOS單元測試最佳實踐583
21.5.1配置測試數據持久層583
21.5.2編寫數據持久層測試用例584
21.5.3運行測試數據持久層測試用例587
21.5.4配置測試業務邏輯層588
21.5.5編寫業務邏輯層測試用例588
21.6小結589
第22章iOS應用UI測試590
22.1 UI測試概述590
22.2添加UI測試到工程590
22.2.1創建工程時添加UI測試框架590
22.2.2在現有工程中添加UI測試用例
目標591
22.3錄製腳本593
22.3.1錄製之前的準備593
22.3.2錄製過程593
22.3.3修改錄製腳本595
22.4訪問UI元素595
22.4.1 UI元素層次結構樹595
22.4.2 UI測試中相關API 597
22.5表示層測試最佳實踐598
22.5.1配置UI測試用例目標598
22.5.2編寫UI測試用例599
22.6小結602
第23章讓你的程序“飛”起來——性能
優化603
23.1內存優化603
23.1.1內存管理603
23.1.2使用Analyze工具檢查內存洩漏603
23.1.3使用Instruments工具檢查內存
洩漏608
23.1.4使用Instruments工具檢查殭屍
對象612
23.1.5 autorelease的使用問題615
23.1.6響應內存警告616
23.2優化資源文件617
23.2.1圖片文件優化618
23.2.2音頻文件優化619
23.3延遲加載620
23.3.1資源文件的延遲加載620
23.3.2故事板文件的延遲加載624
23.3.3 XIB文件的延遲加載626
23.4數據持久化的優化628
23.4.1使用文件628
23.4.2使用SQLite數據庫631
23.4.3使用Core Data 632
23.5可重用對象的使用634
23.5.1表視圖中的可重用對象635
23.5.2集合視圖中的可重用對象636
23.5.3地圖視圖中的可重用對象638
23.6並發處理與多核CPU 638
23.6.1主線程阻塞問題638
23.6.2選擇NSThread還是GCD 639
23.7小結640
第五部分實戰篇
第24章管理好你的程序代碼——代碼版本
控制642
24.1概述642
24.1.1版本控制歷史642
24.1.2基本概念643
24.2 Git代碼版本控制643
24.2.1服務器搭建643
24.2.2 Gitolite服務器管理645
24.2.3 Git常用命令647
24.2.4 Git分支649
24.2.5 Git協同開發653
24.2.6 Xcode中Git的配置與使用656
24.3 GitHub代碼託管服務663
24.3.1創建和配置GitHub賬號663
24.3.2創建代碼庫666
24.3.3刪除代碼庫668
24.3.4派生代碼庫669
24.3.5使用GitHub協同開發671
24.3.6管理組織677
24.4小結680
第25章項目依賴管理681
25.1使用CocoaPods工具管理依賴681
25.1. 1安裝CocoaPods 681
25.1.2搜索庫682
25.1.3項目與第三方庫搭配形式683
25.1.4示例:靜態鏈接庫形式管理依賴684
25.1.5示例:框架形式管理依賴686
25.2使用Carthage工具管理依賴687
25.2.1安裝Carthage 688
25.2.2項目與第三方庫搭配形式688
25.2.3 Cartfile文件688
25.2.4示例:重構MyNotes依賴關係689
25.3小結691
第26章重構MyNotes應用——iOS網絡
通信中的設計模式與架構設計692
26.1移動網絡通信應用的分層架構設計692
26.2 Objective-C版本:在數據持久層中添加和
配置AFNetworking 693
26.2.1用CocoaPods工具管理依賴693
26.2.2測試依賴693
26.3 Swift版本:在數據持久層中添加和配置
Alamofire 694
26.3.1用Carthage工具管理依賴694
26.3.2測試依賴695
26.4基於委託模式實現695
26.4.1網絡通信與委託模式696
26.4.2在異步網絡通信中使用委託模式
實現分層架構設計696
26.4.3類圖697
26.4.4時序圖699
26.4.5數據持久層重構(Objective-C
版本) 702
26.4.6數據持久層重構(Swift版本) 705
26.4. 7業務邏輯層的代碼實現707
26.4.8表示層的代碼實現710
26.5基於觀察者模式的通知機制實現716
26.5.1觀察者模式的通知機制回顧716
26.5.2異步網絡通信中通知機制的分層架
構設計716
26.5.3類圖717
26.5.4時序圖719
26.5.5數據持久層重構(Objective-C
版本) 722
26.5.6數據持久層重構(Swift版本) 723
26.5.7業務邏輯層的代碼實現725
26.5.8表示層的代碼實現726
26.6小結731
第27章把你的應用放到App Store上732
27.1收官732
27.1.1在Xcode中添加圖標732
27.1.2在Xcode中添加啟動界面734
27.1.3調整Identity和Deployment Info
屬性738
27.2為發布進行編譯739
27.2.1創建開發者證書739
27.2.2創建App ID 744
27.2.3創建描述文件745
27.2.4發布編譯748
27.3發布上架750
27.3.1創建應用750
27.3.2應用定價753
27.3.3基本信息輸入754
27.3.4上傳應用757
27.3.5提交審核759
27.4常見審核不通過的原因761
27.4.1功能問題761
27.4.2用戶界面問題761
27.4.3商業問題761
27.4.4不當內容761
27.4.5其他問題762
27.5小結762
第28章iOS敏捷開發項目實戰——2016里
約熱內盧奧運會應用開發及App Store發布763
28.1應用分析與設計763
28.1.1應用概述763
28.1.2需求分析763
28.1.3原型設計764
28.1.4數據庫設計765
28.1.5架構設計766
28.2 iOS敏捷開發766
28.2.1敏捷開發宣言766
28.2.2 iOS適合敏捷開發?767
28.2.3 iOS敏捷開發最佳實踐767
28.3任務1:創建應用工作空間和工程769
28.3.1迭代1.1:創建工作空間769
28.3.2迭代1.2:發佈到GitHub 769
28.4任務2:信息系統層與持久層開發770
28.4.1迭代2.1:編寫數據庫DDL腳本770
28.4.2迭代2.2:插入初始數據到數據庫770
28.4.3迭代2.3:數據庫版本控制771
28.4.4迭代2.4:配置持久層工程PersistenceLayer 771
28.4 .5迭代2.5:編寫實體類772
28.4.6迭代2.6:編寫DAO類單元測試用例類773
28.4.7迭代2.7:編寫DAO類775
28.4.8迭代2.8:數據庫幫助類DBHelper 779
28.4.9迭代2.9:配置及運行持久層測試用例目標781
28.4.10迭代2.10:發佈到GitHub 782
28.5任務3:業務邏輯層開發782
28.5.1迭代3.1:比賽項目業務邏輯類
XCTest單元測試783
28.5.2迭代3.2:編寫比賽項目業務
邏輯類784
28.5.3迭代3.3:比賽日程業務邏輯類
XCTest單元測試785
28.5.4迭代3.4:編寫比賽日程業務
邏輯類786
28.5.5迭代3.5:發佈到GitHub 787
28.6任務4:表示層開發788
28.6.1迭代4.1:使用資源目錄管理圖片和圖標資源788
28.6.2迭代4.2:根據原型設計初步設計
故事板789
28.6.3迭代4.3:“首頁”模塊790
28.6.4迭代4.4:“比賽項目”模塊791
28.6.5迭代4.5:“比賽日程”模塊795
28.6.6迭代4.6:“倒計時”模塊
表示層797
28.6.7迭代4.7:“關於我們”模塊
表示層800
28.6.8迭代4.8:發布到GitHub 800
28.7任務5:收工800
28.7.1迭代5.1:添加圖標800
28.7.2迭代5.2:設計和添加啟動界面801
28.7.3迭代5.3:性能測試與改善801
28.7.4迭代5.4:發佈到GitHub上802
28.7.5迭代5.5:在App Store上發布
應用802
28.8小結802