iOS 7: iPhone/iPad應用開發技術詳解

hzbook2008發表於2013-11-14

iOS 7: iPhone/iPad應用開發技術詳解

作者:劉一道

出版社:機械工業出版社
出版年:2013-11
頁數:507
定價:79.00元
ISBN:9787111440512
樣章下載:http://wenku.it168.com/d_001303536.shtml
內容簡介:
   

    本書由資深Mac/iOS開發工程師基於iOS 7撰寫。內容全面,從Objective-C語法知識、iOS功能特性,到高階開發方法和技巧,幾乎涵蓋了中初級iOS開發工程師需要掌握的所有技術和知識;實戰性強,每個知識點都有輔助理解的小案例,最後還提供了兩個綜合性應用開發案例。內容循序漸進,是系統學習iOS應用開發的經典著作。
    全書共20章,分4部分。準備篇(第1~2章)介紹了iOS、Objective-C和Xcode的入門知識,詳細描述了iOS 7新特性、Objective-C應用開發環境的搭建,以及iPhone應用開發的完整過程;語法篇(第3~8章)詳細講解Objective-C的語法知識,其中包括類、物件、訊息和協議,以及記憶體管理,重點講解了Foundation框架常用類的使用方法;基礎篇(第9~18章)講解了iOS應用開發的框架,包含多狀態和多工、檢視和檢視控制器、事件和通知、音訊和影片等,這些內容是本書的重點;實戰篇(第19~20章)詳細講解了兩個實戰案例的完整開發過程,分別是基於iPad的應用程式“精靈小書櫃”和基於iPhone的“彈球遊戲”,目標是透過兩個案例把前面學到知識應用到實踐中,幫助讀者真正掌握iOS應用開發的過程。

作者簡介
      劉一道  資深Mac/iOS開發工程師,有近10年軟體開發經驗,精通iOS、Objective-C、Xcode等與蘋果開發相關的各項技術,同時對Android和Windows Phone等移動開發技術也有深入的研究,並積累了豐富的實戰經驗。出版了《Objective-C程式設計入門與實踐》等著作。

前  言
如何成為一名軟體開發工程師
    從大學畢業到如今,不知不覺敲程式碼已有十餘載。從初期的“亂石穿空,驚濤拍岸,捲起千堆雪”,到如今的“道可道也,非恆道也。名可名也,非恆名也”,真可謂“談笑間,檣櫓灰飛煙滅”。少了份“浮躁”,多了份“平靜與思考”。懂得了敲程式碼正如雕刻家雕刻作品一樣,需要一點一點精雕細刻,才可能創造出“藝術品”;懂得了“道”存在於程式碼之間,正所謂“為學者日益,為道者日損,損之又損,以至於無為”。
    對於軟體開發這個殿堂,估計很多人會長久徘徊於門外,特別是那些想邁進這個大門的初學者或者愛好者。實際上,當初的我也是帶著很多的困惑和很大的壓力步入這個行業的。
    大學期間留給我們的多是“一無所有”的四年。而吾等眾生,面對畢業之後父母“斷奶”之迫,需要自己靠雙手來“自力更生”;而面對校園外的“招聘”,自己總是那麼惶惶不安缺乏“自信”,特別是參加過幾場人才招聘會之後,真可謂“欲哭無淚”呀!
    引用普希金的詩《假如生活欺騙了你》:“假如生活欺騙了你,不要傷心,不要哭泣;這樣的日子裡,需要勇氣;要相信快樂的日子總會來臨。”只要你有夢想有激情,有強烈的學習慾望,有較強的邏輯思維能力和一定的英語基礎,熱愛軟體開發工作,同時能做到持之以恆,相信你不但能成為一名職業的軟體開發工程師,而且還能成為一名優秀的軟體開發工程師。
    這一行是靠能力說話的,同時,這又是一個充滿激情的行業。不管你是否畢業,不管你是否是計算機專業,甚至不管你是否上過大學,只要肯努力,有上進心,都可以加入軟體開發團隊中。也許你就是中國未來的比爾·蓋茨或者賈伯斯,世界會因“你”而精彩(李開復很喜歡這個座右銘)!
    這裡我還想說兩點,希望對即將畢業或者剛步入大學的你有用:
    對於高校在讀的學生,不管將來要從事什麼行業,建議早有規劃,早做一些準備。以免畢業做“啃老族”。
    對於即將大學畢業或者已經畢業的學生,建議最好不要參加社會上的“軟體開發培訓”。一是需要一筆可觀的培訓費(如果經濟條件好,參加也不錯);二是不利於自學能力的培養。因為從事軟體開發行業,需要保持一顆不斷學習的心,否則很容易被淘汰。
為什麼學習iPhone/iPad應用開發技術
    1)基於iPhone/iPad的應用開發已成為當今移動智慧裝置兩大主流應用開發之一。
    最近幾年國內外從事基於iPhone/iPad開發的人員增速一直位於前列,已經形成了一個龐大的開發隊伍。無論是傳統網際網路還是移動網際網路,iPhone/iPad應用設計理念一直引導著眾多人模仿、推崇和跟隨。iPhone/iPad已成為當今移動智慧裝置應用發展的里程碑。
    2)支援iPhone/iPad的作業系統iOS是當今移動智慧裝置執行最穩定的作業系統。
    當今市場上應用最廣的兩大主流智慧移動裝置作業系統分別是Android和iOS。前者系統的穩定性、開銷性和安全性成為“三座大山”,難以“移動”。很多用過Android手機的使用者都遇到過手機“當機”、“莫名重啟”等問題,而iOS就很少發生這類情況。
    3)iPhone/iPad框架的原生態語言是Objective-C。
    選擇Objective-C作為iPhone/iPad框架的原生態語言有許多方面的原因。
    首先,最主要的原因是,Objective-C是物件導向的語言。iPhone/iPad框架中的很多功能只能透過物件導向技術來呈現。iPhone/iPad SDK用的就是Objective-C。
    其次,Objective-C是標準C語言的一個超集,現存的C程式無須重新開發就能夠使用iPhone/iPad軟體框架,並且在Objective-C中可以使用C的所有特性。可以選擇什麼時候採用物件導向的程式設計方式(例如定義一個新的類),什麼時候使用傳統的程式導向的程式設計方式(定義資料結構和函式)。
    此外,Objective-C是一個簡潔的語言,它的語法簡單,沒有歧義,易於學習。因為術語易於混淆以及抽象設計的重要性,對於初學者來說,物件導向程式設計的學習曲線比較陡峭。像Objective-C這種結構良好的語言使得成為一個物件導向程式設計師更為容易。介紹Objective-C的章節也如同其語言本身一樣簡潔。
    和其他基於標準C語言的面嚮物件語言相比,Objective-C對動態機制支援得更為徹底。編譯器為執行環境保留了很多物件本身的資料資訊,因此某些在編譯時需要做出的選擇就可以推遲到執行時來決定。這種特性使得基於Objective-C的程式非常靈活和強大。
    4)基於iPhone/iPad的應用市場已經成為“成熟有價市場”。
    蘋果應用商店(App Store)是蘋果公司為其iPhone、iPod touch、iPad、Mac等產品建立和維護的數字化應用釋出平臺,允許使用者從iTunes Store瀏覽和下載一些由iOS SDK或者Mac SDK開發的應用程式。根據應用釋出的不同情況,使用者可以付費或者免費下載。
    如果你有不錯的優秀產品,可以釋出到蘋果商店,標上價格。如果有人下載你的應用就會很有信用地“付款”,達到一定的下載數量,也是一筆可觀收入。國內有很多個人和小公司,透過釋出的應用已經獲得了很大的成功。
本書適合哪些讀者
    對軟體開發,特別是對iPhone/iPad開發有興趣的人。
    想成為一名專職的軟體開發人員。
    在校的學生可將本書作為學習計算機軟體開發的教程。
    想了解有關iPhone/iPad軟體開發方面知識的從業人員,本書能幫你很快“過渡”。
    開設相關專業課程的大專院校。
你將學到什麼
    本書是iPhone/iPad開發的入門級書,也是系統介紹支援iPhone/iPad應用開發框架的書。本書最大的作用就是引導你入門,只要你有夢想,有激情,透過本書你將會學到iPhone/iPad開發入門所需要掌握的基本知識。掌握本書知識,便可以邁進iPhone/iPad開發的門檻。
    但是想成為一名優秀的iPhone/iPad軟體開發人員,還需要很多方面的知識,所以希望閱讀完本書的你,繼續深造學習,使自己“更上一層樓”!
你該如何閱讀本書
    本書採取循序漸進的方式。對於有一定的軟體開發經驗,或者缺乏耐心的讀者,可以根據“需求”選擇不同的章節來閱讀,這也是最有效的讀書方式,也是我推崇的讀書方式。
    本書共20章,從內容上可以分四部分。
    準備篇(第1~2章):首先介紹一些iOS、Objective-C和Xcode的入門知識,使讀者瞭解這三者之間的關係,粗略瞭解它們的發展史;並且關注了iOS 7的新特性。然後介紹了大家熟悉的Objective-C應用開發環境的搭建,使讀者初次感受iPhone開發過程。經過這部分的學習使讀者對有關iPhone/iPad開發有一個大致的瞭解,為以後應用開發做準備。
    語法篇(第3~8章):主要介紹Objective-C語法知識,這部分內容有些枯燥,但卻是日後開發過程中必須掌握的基礎知識。其中包括類、物件、訊息和協議,以及記憶體管理。重點介紹了Foundation框架常用類的使用方法。
    基礎篇(第9~18章):重點介紹iOS應用開發的框架,使讀者掌握實際應用開發所需要的基礎知識,這一部分是本書的重點。透過本章的學習,讀者應該掌握多狀態和多工、檢視和檢視控制器、事件和通知、音訊和影片。
    實戰篇(第19~20章):由於篇幅有限,實戰環節只列出兩個案例,分別是基於iPad的應用程式和基於iPhone的小遊戲。透過兩個案例,把前面學到的知識應用到實踐中,使讀者真正體驗和了解軟體開發的全過程。
勘誤和支援
    除封面署名外,參加本書編寫工作的還有:孫振江、陳連增、邊偉、郭合蒼、鄭軍、吳景峰、楊珍民、王文朝、崔少闖、韋閃雷、劉紅嬌、王潔、於雪龍、孔琴。由於作者的水平有限,編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。為此,特意在此公佈我的部落格地址http://blog.sina.com.cn/Beijingwolf。可以將書中的錯誤釋出在Bug勘誤表頁面中,如果你遇到任何問題可以留言,我將盡量線上上提供最滿意的解答。同時,我也會在部落格上不定期釋出一些實戰示例,供讀者下載學習,來不斷強化所學知識。
    該書定稿的時候,蘋果陸續公佈了大量有關iOS 7的技術文件和範例,且一直在進行著。我會透過部落格(http://blog.sina.com.cn/Beijingwolf)不定期發表有關iOS 7的最新材料,緊跟iOS 7最新的技術進展,為各位讀者提供完善的技術材料和指導。書中例項的原始檔可以從華章網站下載,如果你有更多的寶貴意見,歡迎傳送郵件至郵箱yifeilang@aliyun.com,期待能夠得到你們的真摯反饋。
致謝
    我愛讀書,往往不求甚解。中學時雖翻閱過《道德經》、《奇門遁甲》等書,但不得要領,轉瞬間,煙消雲散。2012年,到張瑞海先生的公司做事,有幸重溫《道德經》。張先生是一位令我“醍醐灌頂”的人,“慧根不深”但“後天上進,悟性很高”,不但創造了龐大事業,還引導公司員工“禪悟”《道德經》。正是這個機會,使我悟到賈伯斯在iPhone/iPad設計的“禪道”,在冥冥中明白了“0”和“1”,與“道生一, 一生二, 二生三, 三生萬物。萬物負陰而抱陽,衝氣以為和”相通。明白寫程式碼“天下之至柔”才是程式碼“重構”之道,程式的設計最高境界在於“無為而無不為”。因有機會聆聽先生之“佈道”,使我掌握了iPhone/iPad設計之要領並寫作本書。如今能與諸位同仁共享本書,真心感激張先生這種獨特的“佈道、禪道和悟道”之術。
    高山之巔,白雲之上,羽翔之光。我甚幸遇到機械工業出版社華章公司楊福川先生,他為我安排白宇女士作為本書的編輯。在程式設計行業,程式設計師都有一個過分的溺愛——容不得別人“批評”自己寫的東西,正如母親愛護自己的孩子一樣。之前,與其他出版社合作出版過一本書,由於對方的編輯欠些“火候”,一本書將近一百個批註點,竟然只有三四個點“適得要領”,雖然該書已出版,但我總感覺缺些什麼。而白宇女士,儼然一位“武林”高手,熟諳“點穴之法”,筆筆正中穴位之處,其批註使人心悅誠服,油然敬佩,為本書大增“光色”。
    最後,感謝的就是你,我親愛的讀者,感謝你拿起這本書,你們的認可,就是我的最大的快樂。


劉一道












目  錄
前言
第一部分 準備篇
第1章 初識iOS、Objective-C和Xcode / 2
1.1 認識iOS / 2
1.1.1 iOS的發展歷程 / 2
1.1.2 iOS的設計和功能特性 / 3
1.1.3 iOS 7的新特性 / 5
1.1.4 iOS架構 / 6
1.1.5 iOS框架 / 8
1.1.6 iOS系統框架的變遷 / 11
1.1.7 Mac OS X和iOS平臺不同框架的差異性 / 13
1.1.8 初步瞭解iOS開發者工具 / 16
1.2 認識Objective-C / 20
1.2.1 發展歷程及版本變化 / 20
1.2.2 語言效能與分析 / 21
1.2.3 框架和程式碼的關係 / 22
1.3 基於非蘋果機平臺搭建開發環境 / 23
1.3.1 前期準備 / 23
1.3.2 建立用於安裝Mac OS X的VMWare虛擬機器 / 24
1.3.3 安裝Mac OS X / 26
1.3.4 安裝Xcode SDK / 30
1.4 小結 / 33
第2章 建立你的第一個iOS應用程式 / 34
2.1 應用程式的實現目標 / 34
2.2 入門的開始 / 35
2.2.1 新建一個Xcode專案 / 35
2.2.2 在模擬器中檢視應用程式的效果 / 37
2.3 啟動一個應用程式 / 39
2.3.1 探究main.m原始檔 / 40
2.3.2 分析屬性列表檔案 / 41
2.3.3 檢視串聯圖 / 41
2.4 檢查檢視控制器及其檢視 / 43
2.4.1 如何使用檢查器 / 43
2.4.2 更改檢視的背景顏色 / 45
2.5 對檢視進行配置和管理 / 47
2.5.1 新增使用者介面元素 / 47
2.5.2 為按鈕增添一個動作 / 51
2.5.3 為文字框和標籤建立插座 / 53
2.5.4 開啟Connections檢查器驗證連線 / 56
2.5.5 對文字框進行委託處理 / 57
2.5.6 讓應用程式具有輔助功能 / 58
2.6 使用檢視控制器完成應用程式 / 59
2.6.1 給使用者的名稱新增屬性 / 59
2.6.2 實現changeGreeting: 方法 / 60
2.6.3 把檢視控制器作為輸入文字框的委託 / 61
2.7 測試應用程式 / 62
2.7.1 排查和檢測程式碼 / 62
2.7.2 程式程式碼清單 / 63
2.8 小結 / 64
第二部分 語法篇
第3章 Objective-C——構建iOS應用程式的基石 / 66
3.1 探窺Objective-C語言 / 66
3.1.1 面嚮物件語言Objective-C是C語言的超集 / 67
3.1.2 類和物件 / 67
3.1.3 方法和發訊息 / 69
3.1.4 屬性和存取方法 / 71
3.1.5 塊 / 72
3.1.6 協議和類別 / 73
3.1.7 型別和編碼策略 / 74
3.1.8 import語句 / 76
3.2 Objective-C 2.0新增特性 / 78
3.2.1 關聯引用 / 78
3.2.2 快速列舉 / 80
3.2.3 選擇器 / 81
3.2.4 靜態型別的使用 / 84
3.3 進一步認識塊 / 87
3.3.1 塊可以帶引數和返回值 / 87
3.3.2 塊可以捕獲封閉範圍內的值 / 87
3.3.3 在塊內捕獲變數值的變化 / 88
3.3.4 塊可以作為函式或者方法的引數 / 89
3.3.5 用型別定義可以簡化塊語法 / 90
3.3.6 使用屬性可跟蹤塊 / 90
3.4 小結 / 91
第4章 類——構建應用程式的型別物件原型 / 92
4.1 認識根類 / 92
4.1.1 NSObject簡介 / 92
4.1.2 根類和協議 / 93
4.1.3 根類方法 / 93
4.1.4 根類介面規範 / 95
4.1.5 根類例項方法和類方法 / 95
4.2 如何設計類 / 95
4.2.1 設計介面 / 96
4.2.2 設計實現 / 99
4.2.3 如何使用類名 / 100
4.2.4 如何比較類 / 101
4.3 類的型別 / 101
4.3.1 如何指定靜態型別 / 101
4.3.2 型別的自查處理機制 / 102
4.4 變數 / 102
4.4.1 區域性變數 / 102
4.4.2 全域性變數 / 103
4.4.3 例項變數 / 103
4.4.4 靜態變數 / 106
4.4.5 變數的儲存類別 / 108
4.5 屬性 / 108
4.5.1 屬性的宣告 / 109
4.5.2 屬性的實現 / 110
4.5.3 屬性型別和相關函式 / 111
4.5.4 屬性的型別編碼 / 112
4.5.5 屬性重宣告 / 112
4.5.6 修改父類的屬性 / 113
4.5.7 新舊版本屬性執行時的區別 / 113
4.6 方法 / 114
4.6.1 方法通用格式 / 114
4.6.2 方法的呼叫 / 114
4.7 繼承 / 115
4.7.1 類的繼承關係 / 115
4.7.2 繼承父類的例項變數 / 116
4.7.3 繼承父類的方法 / 116
4.7.4 哪些類需要被繼承 / 117
4.7.5 物件的合成 / 118
4.8 方法重寫 / 119
4.8.1 方法重寫的規則 / 119
4.8.2 方法重寫的使用 / 120
4.9 方法過載 / 121
4.9.1 方法過載的規則 / 121
4.9.2 方法過載的使用 / 121
4.9.3 呼叫還是過載 / 123
4.9.4 過載的型別 / 123
4.10 類的擴充套件 / 125
4.10.1 類別的用法 / 125
4.10.2 延伸的用法 / 127
4.11 異常處理 / 128
4.11.1 如何啟用異常處理 / 128
4.11.2 如何捕捉不同型別的異常 / 128
4.11.3 如何丟擲異常 / 129
4.12 小結 / 129
第5章 物件——構建應用程式的重要“活體” / 130
5.1 理解物件 / 130
5.1.1 物件和根類的關係 / 130
5.1.2 物件如何構建程式 / 131
5.1.3 物件動態型別 / 132
5.1.4 物件的生命週期 / 133
5.2 建立物件 / 137
5.2.1 物件分配處理的機制 / 137
5.2.2 物件初始化方法的原型init / 137
5.2.3 初始化方法的返回值 / 139
5.2.4 init方法的實現 / 140
5.2.5 多個初始化方法和指定初始化方法 / 141
5.2.6 使用dealloc方法 / 143
5.2.7 類工廠方法 / 144
5.3 物件的所有權 / 144
5.3.1 物件所有權策略有哪些 / 145
5.3.2 保留計數的處理機制 / 145
5.3.3 自動釋放所有權 / 146
5.3.4 共享物件的有效性 / 147
5.3.5 如何獲取所有權 / 148
5.4 回收物件 / 149
5.4.1 dealloc方法的實現 / 149
5.4.2 透過引用返回的物件 / 149
5.4.3 保留迴圈的處理機制 / 150
5.4.4 物件的弱引用 / 150
5.4.5 資源的有效管理 / 151
5.5 應用物件 / 152
5.5.1 驗證物件的功能 / 152
5.5.2 比較物件 / 153
5.5.3 複製物件 / 153
5.6 小結 / 154
第6章 訊息和協議——物件之間的通訊方式 / 155
6.1 認識訊息 / 155
6.1.1 訊息的基本語法 / 155
6.1.2 訊息處理機制 / 157
6.1.3 獲得方法地址 / 158
6.1.4 使用隱藏的引數 / 159
6.2 訊息傳送 / 159
6.2.1 向nil傳送訊息 / 160
6.2.2 向自己傳送訊息 / 160
6.2.3 透過傳送訊息呼叫父類方法 / 161
6.3 訊息轉發 / 163
6.3.1 訊息轉發處理機制 / 164
6.3.2 與多重繼承關係 / 165
6.3.3 與類繼承關係 / 166
6.3.4 與訊息代理物件關係 / 167
6.4 認識協議 / 167
6.4.1 協議的分類 / 167
6.4.2 協議物件 / 169
6.4.3 預定義介面 / 169
6.4.4 如何使用預定義方法 / 170
6.4.5 為匿名物件宣告方法 / 171
6.5 應用協議 / 172
6.5.1 如何採用一個協議 / 172
6.5.2 如何服從一個協議 / 172
6.5.3 協議型別校驗處理機制 / 173
6.5.4 如何實現協議巢狀協議 / 173
6.5.5 如何引用其他協議 / 174
6.6 小結 / 175
第7章 Foundation框架——提供基本的系統服務 / 176
7.1 認識Foundation框架 / 176
7.1.1 Foundation類層次結構 / 176
7.1.2 與Core Foundation框架的區別 / 180
7.1.3 如何引用及查詢Foundation框架資訊 / 181
7.1.4 物件的可變性和不變性 / 183
7.2 建立和使用值物件 / 184
7.2.1 建立值物件 / 184
7.2.2 字串和NSString字面常量 / 185
7.2.3 NSNumber字面常量 / 185
7.2.4 日期和時間 / 186
7.3 建立和使用集 / 186
7.3.1 將物件按某種順序儲存在陣列中 / 187
7.3.2 將鍵值對儲存在字典中 / 189
7.3.3 將無序物件儲存在集合中 / 190
7.4 Foundation框架常用類的使用方法詳解 / 190
7.4.1 數字型別 / 191
7.4.2 字串型別 / 193
7.4.3 陣列型別 / 197
7.4.4 字典型別 / 205
7.4.5 日期型別 / 207
7.5 小結 / 209
第8章 記憶體管理——應用程式高效執行的基礎 / 210
8.1 記憶體管理基礎知識 / 210
8.1.1 Cocoa的引用計數機制 / 210
8.1.2 記憶體管理規則 / 211
8.1.3 記憶體管理應用例項 / 211
8.1.4 記憶體管理混亂的原因及解決方法 / 212
8.2 存取方法 / 214
8.2.1 宣告存取方法 / 214
8.2.2 實現存取方法 / 214
8.2.3 存取方法的使用 / 216
8.2.4 實現重置方法 / 217
8.2.5 應用存取方法常見錯誤 / 218
8.3 自動釋放池 / 218
8.3.1 自動釋放池工作原理 / 219
8.3.2 非Application Kit程式中的自動釋放池 / 219
8.3.3 自動釋放池和執行緒 / 220
8.3.4 作用域和巢狀自動釋放池的關係 / 220
8.3.5 所有權策略 / 221
8.3.6 如何實現垃圾回收 / 221
8.4 記憶體中複製的處理機制 / 222
8.4.1 深複製和淺複製 / 222
8.4.2 獨立副本 / 223
8.4.3 使用alloc和init方式複製 / 223
8.4.4 使用NSCopyObject函式複製 / 224
8.4.5 可變物件和不可變物件的複製 / 225
8.4.6 值物件和複製 / 226
8.5 Nib物件的記憶體管理 / 226
8.5.1 插座物件實現的記憶體管理機制 / 227
8.5.2 Nib檔案實現的記憶體管理機制 / 227
8.6 小結 / 228
第三部分 基礎篇
第9章 探究iOS應用程式的核心 / 230
9.1 iOS應用程式核心架構 / 230
9.1.1 iOS應用程式的生命週期 / 230
9.1.2 iOS應用程式的主函式 / 230
9.1.3 應用程式的委託 / 232
9.1.4 主Nib檔案 / 232
9.1.5 事件處理週期 / 232
9.1.6 應用程式的基本設定模式 / 234
9.2 iOS應用程式的核心物件 / 235
9.2.1 iOS應用程式的常見物件 / 235
9.2.2 資料模型的定義 / 237
9.2.3 構建使用者介面 / 239
9.3 iOS應用程式包 / 241
9.3.1 典型的iOS應用程式捆綁包 / 242
9.3.2 資訊屬性列表 / 243
9.3.3 程式圖示和啟動影像 / 246
9.3.4 Nib檔案 / 246
9.4 iOS應用程式關鍵任務的處理機制 / 247
9.4.1 初始化和終止 / 247
9.4.2 響應中斷 / 248
9.4.3 低記憶體警告 / 249
9.5 iOS應用程式的行為定製 / 250
9.5.1 以景觀模式啟動 / 250
9.5.2 和其他應用程式的通訊 / 251
9.5.3 定製的URL模式 / 251
9.5.4 應用程式的偏好設定 / 253
9.5.5 關閉螢幕鎖定 / 254
9.6 小結 / 254
第10章 多狀態和多工——iOS功能日趨增強的表現 / 255
10.1 應用程式的狀態 / 255
10.1.1 狀態切換遵循的原則 / 255
10.1.2 應用程式的狀態及切換路徑 / 256
10.2 應用程式啟動週期 / 257
10.2.1 載入進入前臺 / 257
10.2.2 載入進入後臺 / 258
10.2.3 主函式 / 260
10.2.4 啟動處理的機制 / 260
10.3 響應中斷 / 261
10.3.1 基於警告的中斷處理機制 / 261
10.3.2 中斷應激處理 / 262
10.3.3 通話時使用者介面的調整處理 / 263
10.4 前臺與後臺之間的切換機制 / 263
10.4.1 從前臺切換到後臺的流程 / 263
10.4.2 轉換後臺時應激處理 / 264
10.4.3 後臺執行時的記憶體情況 / 265
10.4.4 從後臺迴轉到前臺的流程 / 265
10.4.5 在喚醒時處理排隊的通知 / 266
10.4.6 應用程式的終止條件 / 266
10.5 主執行迴圈 / 267
10.5.1 主執行迴圈的執行機制 / 267
10.5.2 iOS應用程式中的事件 / 268
10.6 後臺執行和多工處理 / 268
10.6.1 判斷裝置系統多工是否可用 / 269
10.6.2 在後臺執行有限長度的任務 / 269
10.6.3 排程本地通知的遞送 / 270
10.6.4 允許在後臺執行的任務 / 271
10.6.5 選擇退出後臺的執行 / 271
10.7 小結 / 271
第11章 檢視——iOS應用程式互動的基礎 / 272
11.1 視窗、檢視、檢視控制器 / 272
11.1.1 三者之間的關係 / 272
11.1.2 視窗 / 273
11.1.3 檢視 / 273
11.1.4 檢視控制器 / 274
11.2 檢視的幾何屬性特徵 / 275
11.2.1 檢視座標系統 / 275
11.2.2 邊框、邊界和中心的關係 / 275
11.2.3 座標系統變換 / 277
11.3 檢視架構處理 / 277
11.3.1 檢視互動模型 / 278
11.3.2 檢視渲染架構 / 279
11.3.3 改變檢視的層 / 280
11.3.4 內容模式與比例縮放 / 280
11.3.5 自動尺寸調整行為 / 281
11.4 檢視的建立和管理 / 283
11.4.1 建立檢視物件 / 284
11.4.2 檢視的標識和命名 / 284
11.4.3 子檢視的新增和移除 / 285
11.4.4 檢視層次中的座標轉換 / 287
11.4.5 檢視的查詢 / 288
11.5 在執行時修改檢視 / 289
11.5.1 實現檢視動畫 / 290
11.5.2 配置動畫的引數 / 290
11.5.3 配置動畫的委託 / 291
11.5.4 響應佈局的變化 / 291
11.5.5 重畫檢視的內容 / 292
11.5.6 隱藏檢視 / 293
11.6 定製檢視物件 / 293
11.6.1 初始化定製檢視 / 293
11.6.2 繪製檢視內容 / 294
11.6.3 響應事件 / 295
11.6.4 檢視物件的清理 / 295
11.7 小結 / 296
第12章 UIKit框架——建立基於觸控的使用者介面 / 297
12.1 UIKit標準檢視的分類 / 297
12.2 顯示檢視 / 298
12.2.1 標籤 / 298
12.2.2 圖片檢視 / 299
12.2.3 進度條檢視 / 300
12.2.4 等待檢視 / 301
12.3 控制元件 / 302
12.3.1 按鈕 / 302
12.3.2 文字框 / 304
12.3.3 滑塊 / 305
12.3.4 切換開關 / 306
12.4 導航檢視 / 307
12.4.1 導航欄 / 307
12.4.2 標籤欄 / 309
12.5 警告檢視和動作表單 / 310
12.5.1 警告檢視 / 310
12.5.2 動作表單 / 311
12.6 文字和Web檢視 / 313
12.6.1 文字檢視 / 313
12.6.2 Web檢視 / 314
12.7 容器檢視 / 315
12.7.1 表檢視 / 315
12.7.2 滾動檢視 / 319
12.7.3 工具欄 / 321
12.8 其他常用型別 / 322
12.8.1 分頁控制元件 / 322
12.8.2 搜尋欄 / 324
12.9 小結 / 328
第13章 檢視控制器——檢視的幕後操縱者 / 329
13.1 檢視控制器基礎知識 / 329
13.1.1 檢視控制器的功能 / 329
13.1.2 檢視控制器的管理機制 / 330
13.1.3 檢視控制器的分類 / 331
13.1.4 檢視控制器的內容多種展示方式 / 333
13.1.5 多種檢視控制器混合應用 / 334
13.2 檢視控制器的生命週期 / 335
13.2.1 檢視控制器的初始化 / 336
13.2.2 檢視的載入和解除安裝 / 336
13.3 標準檢視控制器 / 338
13.3.1 標準檢視控制器的功能及使用方法 / 339
13.3.2 標準檢視控制器的應用 / 340
13.4 分割檢視控制器 / 342
13.4.1 分割檢視控制器構建原理及功能 / 342
13.4.2 分割檢視控制器的應用 / 343
13.5 導航檢視控制器 / 344
13.5.1 導航檢視控制器構建原理及功能 / 344
13.5.2 導航檢視控制器的應用 / 346
13.6 選項卡檢視控制器 / 347
13.6.1 選項卡檢視控制器構建原理及功能 / 347
13.6.2 選項卡檢視控制器的應用 / 349
13.7 翻頁檢視控制器 / 349
13.7.1 翻頁檢視控制器構建原理及功能 / 349
13.7.2 翻頁檢視控制器的應用 / 351
13.8 小結 / 351
第14章 事件——應用程式的驅動動力 / 352
14.1 iOS系統中的事件 / 352
14.1.1 事件是如何驅動應用程式的 / 352
14.1.2 什麼是觸控事件 / 352
14.1.3 什麼是運動事件 / 353
14.1.4 事件和觸控 / 354
14.1.5 事件的傳遞 / 356
14.1.6 響應者物件和響應者鏈 / 356
14.1.7 調整事件的傳遞 / 357
14.2 常見手勢的處理例項 / 358
14.2.1 觸控事件處理方法 / 358
14.2.2 單個和多個觸碰手勢處理方法 / 359
14.2.3 檢測碰擦手勢 / 360
14.2.4 處理複雜的多點觸控序列 / 361
14.2.5 觸控事件處理技巧 / 362
14.3 鍵盤管理 / 363
14.3.1 接收鍵盤通告 / 363
14.3.2 顯示鍵盤 / 365
14.3.3 取消鍵盤 / 365
14.3.4 移動鍵盤下面的內容 / 365
14.4 小結 / 368
第15章 通知——訊息的多樣化展示 / 369
15.1 通知的實現原理 / 369
15.1.1 本地通知 / 369
15.1.2 推送通知 / 370
15.1.3 通知的應用場景 / 371
15.2 通知的相關事務 / 373
15.2.1 自定義警告聲音 / 373
15.2.2 建立和排程本地通知 / 373
15.2.3 接收遠端通知 / 375
15.2.4 如何處理通知 / 377
15.3 推送通知服務 / 380
15.3.1 推送通知和路徑 / 380
15.3.2 服務的反饋和質量 / 381
15.3.3 推送通知的安全處理機制 / 381
15.3.4 通知的負載處理 / 385
15.4 推送通知的配置和開發 / 386
15.4.1 沙箱環境和產品環境 / 386
15.4.2 配置處理流程 / 387
15.5 實現推送通知服務的通訊功能 / 389
15.5.1 普通提供的通訊功能 / 389
15.5.2 二進位制介面和通知的格式 / 390
15.5.3 服務的反饋 / 393
15.6 小結 / 393
第16章 Core Data框架——管理應用程式的資料模型 / 394
16.1 認識Core Data / 394
16.1.1 初窺Core Data特性 / 394
16.1.2 Core Data資料管理機制 / 395
16.1.3 探究Core Data的本質 / 396
16.2 Core Data堆疊配置 / 396
16.2.1 託管物件和上下文 / 398
16.2.2 讀取請求 / 399
16.2.3 持久化儲存協調者 / 400
16.2.4 持久化儲存 / 401
16.2.5 持久化文件 / 402
16.2.6 託管物件模型 / 402
16.3 Core Data模組的運作機制及基礎類 / 402
16.3.1 NSManagedObject-Context類 / 403
16.3.2 NSManaged-Object類 / 404
16.3.3 NSManagedObject-Context類 / 405
16.3.4 NSPersistentStore-Coordinator類 / 405
16.3.5 NSPersistent-Document類 / 406
16.3.6 NSFetch-Request類 / 406
16.4 Core Data堆疊訪問技術 / 407
16.4.1 建立一個新的託管物件上下文 / 407
16.4.2 讀取託管物件模型和實體 / 407
16.4.3 新增持久化儲存 / 407
16.5 託管物件的管理 / 408
16.5.1 讀取託管物件 / 408
16.5.2 讀取特定的屬性值 / 411
16.5.3 建立託管物件 / 412
16.5.4 儲存託管物件 / 413
16.5.5 刪除託管物件 / 413
16.6 小結 / 413
第17章 音訊和影片——強大的多媒體功能支援 / 414
17.1 初識iOS多媒體框架 / 414
17.1.1 iOS聲音處理工具 / 414
17.1.2 Core Audio框架 / 414
17.1.3 音訊硬體編解碼 / 415
17.1.4 iOS支援的音訊回放和錄製格式 / 415
17.1.5 Core Audio音訊會話介面 / 416
17.1.6 iOS系統支援的音訊單元 / 417
17.2 錄製音訊 / 417
17.2.1 使用AVAudioRecorder類進行錄製 / 417
17.2.2 用音訊佇列服務進行錄製 / 418
17.2.3 音訊中斷處理 / 419
17.3 播放音訊 / 419
17.3.1 透過iPod媒體庫訪問介面播放媒體項 / 419
17.3.2 使用系統聲音服務播放短聲音及觸發振動 / 420
17.3.3 透過AVAudioPlayer類輕鬆播放聲音 / 421
17.3.4 用音訊佇列服務播放和控制聲音 / 423
17.3.5 使用OpenAL播放和定位聲音 / 426
17.3.6 解析音訊流 / 426
17.4 iPhone/iPad音訊的最佳實踐 / 426
17.4.1 操作音訊的貼士 / 426
17.4.2 iOS中偏好的音訊格式 / 427
17.5 iOS中的影片 / 428
17.5.1 錄製影片 / 428
17.5.2 播放影片 / 428
17.6 小結 / 429
第18章 裝置特性——支援多種功能的應用 / 430
18.1 識別可用的硬體特性 / 430
18.2 External Accessory框架的管道機制 / 430
18.2.1 宣告應用程式支援的協議 / 431
18.2.2 在執行時連線配件 / 431
18.2.3 處理和流相關的資料 / 432
18.2.4 監控與配件有關的事件 / 433
18.3 訪問加速計事件 / 433
18.3.1 配置加速計 / 434
18.3.2 選擇恰當的更新頻率 / 435
18.3.3 從加速計資料中分離重力成分 / 435
18.3.4 從加速計資料中分離實時運動成分 / 435
18.3.5 取得當前裝置的方向 / 436
18.4 Core Location框架提供定位服務 / 436
18.4.1 獲取使用者的當前位置 / 436
18.4.2 獲取方向相關的事件 / 438
18.5 Map Kit框架提供地圖服務 / 439
18.5.1 在使用者介面中加入地圖檢視 / 440
18.5.2 縮放和移動地圖內容 / 440
18.5.3 顯示使用者的當前位置 / 441
18.5.4 座標和畫素之間的轉換 / 441
18.5.5 透過反向地理編碼器獲取地標資訊 / 441
18.6 地圖上註解的實現 / 442
18.6.1 在地圖檢視上顯示註解 / 442
18.6.2 新增和移除註解物件 / 443
18.6.3 定義註解檢視 / 443
18.6.4 建立註解檢視 / 443
18.6.5 處理註解檢視中的事件 / 444
18.7 UIKit框架的應用 / 447
18.7.1 顯示照相機介面 / 447
18.7.2 關閉照相機介面 / 448
18.7.3 顯示照片選取器介面 / 449
18.8 使用郵件編輯介面 / 450
18.9 小結 / 451
第四部分 實戰篇
第19章 iPad應用開發實戰——精靈小書櫃 / 454
19.1 系統的總體設計方案 / 454
19.1.1 系統模組組成 / 454
19.1.2 啟動專案 / 455
19.2 組裝書櫃 / 458
19.2.1 書櫃的實現 / 459
19.2.2 書櫃的框架及組裝 / 460
19.2.3 設定書櫃的顯示效果 / 461
19.3 在小書櫃上展示書的封面 / 462
19.3.1 構建書的封面 / 462
19.3.2 將書的封面展示在書櫃中 / 463
19.3.3 構建多面書櫃 / 463
19.3.4 透過手勢展示多面書櫃 / 465
19.4 閱讀書的內容 / 465
19.4.1 設計內容顯示的模板 / 465
19.4.2 書的封面與內容關聯 / 466
19.4.3 動畫效果翻頁 / 469
19.4.4 返回書櫃主介面 / 470
19.5 小結 / 471
第20章 iPhone應用開發實戰——彈球遊戲 / 472
20.1 認識遊戲引擎 / 472
20.1.1 Cocos2D遊戲引擎 / 472
20.1.2 Box2D物理引擎 / 473
20.1.3 Chipmunk物理引擎 / 474
20.1.4 遊戲引擎組成結構 / 474
20.1.5 物理引擎中的剛體 / 476
20.2 Cocos2D框架中的常用類 / 476
20.2.1 節點類CCNode / 476
20.2.2 場景類CCScene / 477
20.2.3 層類CCLayer / 479
20.2.4 標籤類CCLabel / 480
20.2.5 動作類CCAction / 481
20.2.6 導演類CCDirector / 482
20.2.7 精靈類CCSprite / 483
20.3 彈球遊戲的準備工作 / 483
20.3.1 彈球遊戲實現目標 / 483
20.3.2 安裝Cocos2D-iPhone / 484
20.3.3 啟動專案的建立 / 485
20.3.4 程式控制權的轉交 / 486
20.4 實現場景及其互動物件 / 489
20.4.1 新增自定義的遊戲場景 / 489
20.4.2 建立場景類GameScene / 489
20.4.3 建立World物件和邊界框 / 491
20.5 製作彈球 / 492
20.5.1 新增彈球精靈 / 492
20.5.2 建立彈球body並新增衝力 / 493
20.5.3 使用tick方法重新整理物件 / 493
20.6 設計球拍 / 494
20.6.1 增加球拍 / 494
20.6.2 移動球拍 / 496
20.6.3 限制球拍 / 497
20.6.4 球反彈的最佳化處理 / 498
20.7 方塊的實現 / 498
20.7.1 增加方塊 / 499
20.7.2 銷燬方塊 / 500
20.8 遊戲邏輯處理 / 501
20.8.1 碰撞檢測機制 / 501
20.8.2 球碰到螢幕底部 / 502
20.8.3 遊戲結束的條件 / 504
20.8.4 新增遊戲結束場景 / 505
20.9 新增遊戲音樂 / 507
20.10 小結 / 507

iOS 7: iPhone/iPad應用開發技術詳解封面

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16502878/viewspace-776584/,如需轉載,請註明出處,否則將追究法律責任。

相關文章