iOS開發指南:從Hello World到App Store上架(第5版) | 被動收入的投資秘訣 - 2024年4月

iOS開發指南:從Hello World到App Store上架(第5版)

作者:關東升
出版社:人民郵電
出版日期:2017年06月01日
ISBN:9787115450630
語言:繁體中文
售價:621元

本書是iOS開發權V教程,以Swift和Objective-C兩種語言進行講解。書中分5部分介紹如何從零起步編寫並上線iOS應用:第一部分介紹iOS開發的基礎知識,包括界面構建技術、基本控件、協議、表視圖、界面布局、屏幕適配、導航、iPad應用開發、iOS設備手勢、Quartz2D、iOS動畫等;第二部分介紹本地數據持久化、數據交換格式和Web Service,第三部分為進階篇,介紹了定位服務、蘋果地圖、Contacts框架、應用擴展、用戶通知等內容;第四部分介紹測試、調試和優化等相關知識;第五部分為實戰篇,涵蓋代碼版本管理、項目依賴管理、App Store發布流程,以及一個真實iOS應用的設計、編程、測試與發布過程。與上一版相比,本書不僅基於iOS10進行了全面更新,還增加並修訂了設備手勢、Quartz2D、動畫、用戶擴展、用戶通知、Core Data等內容。本書適合iOS開發人員閱讀。【關東升】一個在IT領域摸爬滾打20年的程序員、培訓師、作者,除本書外,還着有《從零開始學Swift》《Android網絡游戲開發實戰》《Cocos2d-x實戰》系列等書。

第一部分基礎篇第1章開篇綜述21.1iOS概述21.1.1iOS介紹21.1.2iOS10新特性21.2開發環境及開發工具31.3本書約定41.3.1案例代碼約定41.3.2圖示的約定51.3.3方法命名約定61.3.4構造函數命名約定71.3.5錯誤處理約定7第2章第一個iOS應用程序82.1創建HelloWorld工程82.1.1通過Xcode創建工程92.1.2添加標簽112.1.3運行應用132.1.4Xcode中的iOS工程模板132.1.5應用剖析142.2應用生命周期162.2.1非運行狀態——應用啟動場景182.2.2點擊Home鍵——應用退出場景182.2.3掛起重新運行場景212.2.4內存清除:應用終止場景212.3設置產品屬性222.3.1Xcode中的工程和目標222.3.2設置常用的產品屬性242.4iOSAPI簡介262.4.1API概述262.4.2如何使用API幫助文檔262.5小結28第3章CocoaTouch框架與構建應用界面293.1視圖控制器293.1.1視圖控制器種類293.1.2視圖的生命周期293.2視圖303.2.1UIView繼承層次結構303.2.2視圖分類323.2.3應用界面構建層次333.3使用故事板構建界面343.3.1什麼是故事板343.3.2場景和過渡373.4使用XIB文件構建界面383.4.1重構HelloWorld383.4.2XIB與故事板比較423.5使用純代碼構建界面423.5.1重構HelloWorld423.5.2視圖的幾個重要屬性443.6三種構建界面技術討論463.6.1所見即所得463.6.2原型驅動開發463.6.3團隊協同開發473.7小結47第4章UIView與視圖484.1標簽與按鈕484.1.1InterfaceBuilder實現484.1.2代碼實現514.2事件處理534.2.1InterfaceBuilder實現534.2.2代碼實現554.3訪問視圖574.3.1InterfaceBuilder實現574.3.2代碼實現584.4TextField和TextView604.4.1InterfaceBuilder實現604.4.2代碼實現624.4.3鍵盤的打開和關閉644.4.4關閉和打開鍵盤的通知644.4.5鍵盤的種類654.5開關控件、分段控件和滑塊控件674.5.1開關控件674.5.2分段控件694.5.3滑塊控件704.6Web視圖:WKWebView類724.7警告框和操作表774.7.1使用UIAlertController實現警告框774.7.2使用UIAlertController實現操作表794.8等待相關的控件與進度條814.8.1活動指示器ActivityIndicatorView814.8.2進度條ProgressView834.9工具欄和導航欄864.9.1工具欄864.9.2導航欄904.10小結95第5章委托協議、數據源協議與高級視圖965.1視圖中的委托協議和數據源協議965.2選擇器965.2.1日期選擇器965.2.2普通選擇器1015.2.3數據源協議與委托協議1065.3集合視圖1085.3.1集合視圖的組成1085.3.2集合視圖數據源協議與委托協議1095.4案例:奧運會比賽項目1095.4.1創建工程1105.4.2自定義集合視圖單元格1105.4.3添加集合視圖1125.4.4實現數據源協議1145.4.5實現委托協議1155.5小結115第6章表視圖1166.1概述1166.1.1表視圖的組成1166.1.2表視圖的相關類1176.1.3表視圖分類1176.1.4單元格的組成和樣式1196.1.5數據源協議與委托協議1216.2簡單表視圖1226.2.1實現協議方法1226.2.2UIViewController根視圖控制器1236.2.3UITableViewController根視圖控制器1296.3自定義表視圖單元格1336.3.1InterfaceBuilder實現1336.3.2代碼實現1376.4添加搜索欄1386.5分節表視圖1436.5.1添加索引1436.5.2分組1466.6插入和刪除單元格1476.6.1InterfaceBuilder實現1496.6.2代碼實現1546.7移動單元格1556.8表視圖UI設計模式1576.8.1分頁模式1576.8.2下拉刷新模式1586.8.3下拉刷新控件1596.9小結160第7章界面布局1617.1界面布局概述1617.1.1表單布局模式1617.1.2列表布局模式1617.1.3網格布局模式1627.2iOS中各種「欄」1627.3傳統界面布局問題1637.4AutoLayout布局技術1647.4.1在InterfaceBuilder中管理AutoLayout約束1647.4.2案例:AutoLayout布局1647.5靜態表布局1697.5.1什麼是靜態表1697.5.2案例:iMessage應用登錄界面1707.6使用堆視圖StackView1747.6.1堆視圖與布局1747.6.2案例:堆視圖布局1757.7小結180第8章屏幕適配1818.1iOS屏幕的多樣性1818.1.1iOS屏幕介紹1818.1.2iOS的3種分辨率1828.1.3獲得iOS設備的屏幕信息1838.2SizeClass與iOS多屏幕適配1848.2.1在Xcode6和Xcode7中使用SizeClass技術1848.2.2SizeClass的九宮格1858.2.3SizeClass的四個象限1868.2.4在Xcode8中使用SizeClass1878.2.5案例:使用SizeClass1908.3資源目錄與圖片資源適配1928.4小結195第9章視圖控制器與導航模式1969.1概述1969.1.1視圖控制器的種類1969.1.2導航模式1969.2模態視圖1979.2.1InterfaceBuilder實現1999.2.2代碼實現2059.3平鋪導航2069.3.1應用場景2069.3.2基於分屏導航的實現2089.3.3基於電子書導航的實現2139.4標簽導航2199.4.1應用場景2199.4.2InterfaceBuilder實現2209.4.3代碼實現2239.5樹形結構導航2259.5.1應用場景2259.5.2InterfaceBuilder實現2269.5.3代碼實現2339.6組合使用導航模式2359.6.1應用場景2359.6.2InterfaceBuilder實現2369.6.3代碼實現2439.7小結246第10章iPad應用開發24710.1iPad與iPhone應用開發的差異24710.1.1應用場景不同24710.1.2導航模式不同24710.1.3API不同24710.2iPad樹形結構導航24810.2.1「郵件」應用中的樹形結構導航24810.2.2Master—Detail應用程序模板24910.2.3使用InterfaceBuilder實現SplitViewSample案例25410.2.4使用代碼實現SplitViewSample案例25810.3iPad模態視圖26110.3.1「郵件」應用中的模態導航26110.3.2iPad模態導航相關API26210.3.3使用InterfaceBuilder實現ModalViewSample案例26410.3.4使用代碼實現ModalViewSample案例26810.4Popover視圖27110.4.1Popover相關API27210.4.2PopoverViewSample案例27210.5分屏多任務27610.5.1SlideOver多任務27610.5.2分屏視圖多任務27810.5.3畫中畫多任務28010.6iPad分屏多任務適配開發28010.6.1分屏多任務前提條件28010.6.2分屏多任務適配28110.7小結282第11章手勢識別28311.1手勢種類28311.2手勢識別器28411.2.1視圖對象與手勢識別28411.2.2手勢識別狀態28511.2.3實例:識別Tap手勢28511.2.4實例:識別LongPress手勢29011.2.5實例:識別Pan手勢29111.2.6實例:Swipe手勢29311.2.7實例:Rotation手勢29511.2.8實例:Pinch手勢29711.2.9實例:ScreenEdgePan手勢29911.3小結301第12章Quartz2D繪圖技術30212.1繪制技術基礎30212.1.1視圖繪制周期30212.1.2實例:填充屏幕30212.1.3填充與描邊30512.1.4繪制圖像和文本30612.2Quartz圖形上下文30812.3Quartz路徑30912.3.1Quartz路徑概述30912.3.2實例:使用貝塞爾曲線31112.4Quartz坐標變換31212.4.1坐標系31212.4.22D圖形的基本變換31512.4.3CTM變換31712.4.4仿射變換32212.5小結322第13章動畫技術32313.1視圖動畫32313.1.1動畫塊32313.1.2動畫結束的處理32513.1.3過渡動畫32613.2CoreAnimation框架32913.2.1圖層32913.2.2隱式動畫33113.2.3顯式動畫33313.2.4關鍵幀動畫33513.2.5使用路徑33613.3小結338第二部分數據與網絡通信篇第14章數據持久化34014.1概述34014.1.1沙盒目錄34014.1.2持久化方式34114.2實例:MyNotes應用34114.3屬性列表34314.4使用SQLite數據庫34914.4.1SQLite數據類型35014.4.2添加SQLite3庫35014.4.3配置Swift環境35114.4.4創建數據庫35114.4.5查詢數據35314.4.6修改數據35514.5iOS10中的CoreData技術35714.5.1對象關系映射技術35714.5.2添加CoreData支持35814.5.3CoreData棧35914.6案例:采用CoreData重構MyNotes應用36014.6.1建模和生成實體36014.6.2CoreData棧DAO36614.6.3查詢數據36714.6.4修改數據36914.7小結370第15章數據交換格式37115.1XML數據交換格式37215.1.1XML文檔結構37215.1.2解析XML文檔37315.2案例:MyNotes應用讀取XML數據37415.2.1使用NSXML解析37615.2.2使用TBXML解析37915.3JSON數據交換格式38515.3.1JSON文檔結構38515.3.2JSON數據編碼/解碼38615.4案例:MyNotes應用JSON解碼38715.5小結388第16章RESTWebService38916.1概述38916.1.1RESTWebService概念38916.1.2HTTP協議38916.1.3HTTPS協議39016.1.4蘋果ATS限制39016.2使用NSURLSession39116.2.1NSURLSessionAPI39216.2.2簡單會話實現GET請求39316.2.3默認會話實現GET請求39616.2.4實現POST請求39716.2.5下載數據39816.3實例:使用NSURLSession重構MyNotes案例40016.3.1插入方法40116.3.2修改方法40216.3.3刪除方法40216.4使用AFNetworking框架40516.4.1比較ASIHTTPRequest、AFNetworking和MKNetworkKit40516.4.2安裝和配置AFNetworking框架40516.4.3實現GET請求40716.4.4實現POST請求40816.4.5下載數據40816.4.6上傳數據41016.5使用為Swift設計的網絡框架:Alamofire41216.5.1安裝和配置Alamofire框架41216.5.2實現GET請求41316.5.3實現POST請求41416.5.4下載數據41416.5.5上傳數據41516.6反饋網絡信息改善用戶體驗41616.6.1使用下拉刷新控件改善用戶體驗41616.6.2使用活動指示器控件41916.6.3使用網絡活動指示器42016.7小結421第三部分進階篇第17章定位服務42417.1定位服務概述42417.1.1定位服務編程42517.1.2測試定位服務42817.2管理定位服務43217.2.1應用啟動與停止下的定位服務管理43217.2.2視圖切換下的定位服務管理43217.2.3應用前后台切換下的定位服務管理43317.2.4設置自動暫停位置服務43617.2.5后台位置服務管理43617.3地理信息編碼與反編碼43717.3.1地理信息反編碼43717.3.2實例:地理信息反編碼43717.3.3地理信息編碼查詢43817.3.4實例:地理信息編碼查詢43917.4小結440第18章蘋果地圖應用44118.1使用iOS蘋果地圖44118.1.1顯示地圖44118.1.2顯示3D地圖44518.2添加標注44618.2.1實現查詢44718.2.2在地圖上添加標注44918.3跟蹤用戶位置變化45018.4使用程序外地圖45118.5小結454第19章訪問通訊錄45519.1通訊錄的安全訪問設置45519.2使用Contacts框架讀取聯系人信息45619.2.1查詢聯系人45719.2.2讀取單值屬性46019.2.3讀取多值屬性46119.2.4讀取圖片屬性46419.3使用Contacts框架寫入聯系人信息46419.3.1創建聯系人46519.3.2修改聯系人46719.3.3刪除聯系人46819.4使用系統提供的界面46919.4.1選擇聯系人47019.4.2顯示和修改聯系人47219.5小結475第20章iOS10應用擴展47620.1應用擴展概述47620.1.1iOS10應用擴展種類47620.1.2應用擴展工作原理47720.1.3應用擴展的生命周期47820.2Today應用擴展47820.2.1使用Today應用擴展47920.2.2實例:奧運會倒計時牌48020.3開發表情包48320.3.1iMessage應用48320.3.2表情包48420.3.3實例:開發表情包48420.4Message框架48820.4.1Message框架的主要API48820.4.2消息布局48820.4.3消息擴展界面的收縮和展開48920.4.4消息應用的生命周期49020.4.5消息會話49020.4.6實例:高斯模糊濾鏡49120.5小結494第21章重裝上陣的iOS10用戶通知49521.1用戶通知概述49521.1.1通知種類49521.1.2通知界面49521.1.3設置通知49721.2開發本地通知49821.2.1開發本地通知案例49821.2.2請求授權50021.2.3通知的創建與發送50121.2.4通知接收后的處理50321.3開發推送通知50321.3.1推送通知機理50421.3.2生成SSL證書50421.3.3iOS客戶端編程51321.3.4在iOS設備上運行客戶端51521.3.5內容提供者推送通知51821.4小結519第四部分測試、調試和優化篇第22章找出程序中的bug——調試52222.1Xcode調試工具52222.1.1定位編譯錯誤52222.1.2查看和顯示日志52322.1.3設置和查看斷點52422.1.4調試工具53022.1.5輸出窗口53222.1.6變量查看窗口53222.1.7查看線程53322.2LLDB調試工具53522.2.1斷點命令53522.2.2觀察點命令53722.2.3查看變量和計算表達式命令53822.3日志與斷言輸出54122.3.1使用NSLog函數54122.3.2使用斷言54222.4異常棧報告分析54322.4.1跟蹤異常棧54322.4.2分析棧報告54522.5在iOS設備上調試54622.5.1Xcode設置54622.5.2設備設置54622.6Xcode設備管理工具54822.6.1查看設備上的應用程序54822.6.2設備日志55022.7小結551第23章iOS測試驅動與單元測試55223.1測試驅動的軟件開發概述55223.1.1測試驅動的軟件開發流程55223.1.2測試驅動的軟件開發案例55323.1.3iOS單元測試框架55523.2使用XCTest測試框架55523.2.1添加XCTest到工程55523.2.2編寫XCTest測試方法55823.2.3運行測試用例目標56123.2.4分析測試報告56223.3異步單元測試56423.4性能測試56723.4.1測試用例代碼56823.4.2分析測試結果56823.5小結571第24章iOS應用UI測試57224.1UI測試概述57224.2添加UI測試到工程57224.2.1創建工程時添加UI測試框架57224.2.2在現有工程中添加UI測試用例目標57324.3錄制腳本57524.3.1錄制之前的准備57524.3.2錄制過程57524.3.3修改錄制腳本57724.4訪問UI元素57724.4.1UI元素的層次結構樹57724.4.2UI測試中相關API57924.5表示邏輯組件測試最佳實踐57924.5.1備忘錄查詢操作58024.5.2增加備忘錄操作58024.5.3刪除備忘錄操作58124.5.4顯示備忘錄詳細信息操作58224.6小結582第25章讓你的程序「飛」起來——性能優化58325.1內存優化58325.1.1內存管理58325.1.2使用Analyze工具檢查內存泄漏58325.1.3使用Instruments工具檢查內存泄漏58725.1.4使用Instruments工具檢查僵屍對象59225.1.5autorelease的使用問題59425.1.6響應內存警告59525.2優化資源文件59625.2.1圖片文件優化59725.2.2音頻文件優化59825.3延遲加載59925.3.1資源文件的延遲加載59925.3.2故事板文件的延遲加載60325.3.3XIB文件的延遲加載60525.4數據持久化的優化60725.4.1使用文件60725.4.2使用SQLite數據庫61125.4.3使用CoreData61225.5可重用對象的使用61325.5.1表視圖中的可重用對象61425.5.2集合視圖中的可重用對象61525.5.3地圖視圖中的可重用對象61725.6並發處理61825.6.1一些概念61825.6.2主線程阻塞問題61825.6.3選擇NSThread、NSOperation還是GCD61925.6.4GCD技術61925.7小結620第五部分實戰篇第26章管理好你的程序代碼——代碼版本控制62226.1概述62226.1.1版本控制歷史62226.1.2基本概念62326.2Git代碼版本控制62326.2.1服務器搭建62326.2.2Gitolite服務器管理62526.2.3Git常用命令62726.2.4Git分支62826.2.5Git協同開發63226.2.6Xcode中Git的配置與使用63426.3GitHub代碼托管服務64226.3.1創建和配置GitHub賬號64226.3.2創建代碼庫64526.3.3刪除代碼庫64626.3.4派生代碼庫64726.3.5管理組織65026.4小結653第27章項目依賴管理65427.1使用CocoaPods工具管理依賴65427.1.1安裝CocoaPods65427.1.2搜索庫65527.1.3項目與第三方庫搭配形式65627.1.4實例:靜態鏈接庫形式管理依賴65727.1.5實例:框架形式管理依賴65927.2使用Carthage工具管理依賴66027.2.1安裝Carthage66027.2.2項目與第三方庫搭配形式66127.2.3Cartfile文件66127.2.4實例:重構MyNotes依賴關系66227.3小結664第28章把應用放到AppStore上66528.1收官66528.1.1在Xcode中添加圖標66528.1.2在Xcode中添加啟動界面66828.1.3調整Identity和DeploymentInfo屬性67128.2為發布進行編譯67228.2.1創建開發者證書67228.2.2創建AppID67528.2.3創建描述文件67628.2.4發布編譯67928.3發布上架68028.3.1創建應用68128.3.2應用定價68328.3.3基本信息輸入68428.3.4上傳應用68728.3.5提交審核68928.4常見審核不通過的原因69128.4.1功能問題69128.4.2用戶界面問題69128.4.3商業問題69128.4.4不當內容69128.4.5其他問題69228.5小結692第29章iOS開發項目實戰——2020東京奧運會應用開發及AppStore發布69329.1應用分析與設計69329.1.1應用概述69329.1.2需求分析69329.1.3原型設計69429.1.4數據庫設計69429.2任務1:創建應用工程69529.2.1迭代1.1:創建工程69629.2.2迭代1.2:發布到GitHub69629.3任務2:數據庫與數據持久化邏輯組件開發69629.3.1迭代2.1:編寫數據庫DDL腳本69629.3.2迭代2.2:插入初始數據到數據庫69729.3.3迭代2.3:數據庫版本控制69729.3.4迭代2.4:配置數據持久化邏輯組件69829.3.5迭代2.5:編寫實體類69829.3.6迭代2.6:編寫DAO類70029.3.7迭代2.7:數據庫幫助類DBHelper70429.3.8迭代2.8:發布到GitHub70629.4任務3:表示邏輯組件開發70629.4.1迭代3.1:使用資源目錄管理圖片和圖標資源70729.4.2迭代3.2:根據原型設計初步設計故事板70829.4.3迭代3.3:「首頁」模塊70929.4.4迭代3.4:「比賽項目」模塊71029.4.5迭代3.5:「比賽日程」模塊71429.4.6迭代3.6:「倒計時」模塊71829.4.7迭代3.7:「關於我們」模塊71929.4.8迭代3.8:發布到GitHub72029.5任務4:收工72029.5.1迭代4.1:添加圖標72029.5.2迭代4.2:設計和添加啟動界面72029.5.3迭代4.3:性能測試與改善72129.5.4迭代4.4:發布到GitHub72229.5.5迭代4.5:在AppStore上發布應用72229.6小結722


相關書籍