編輯推薦
DevDiv移動開發社區版主、資深會員聯閤編寫
章節設置全麵涵蓋iOS應用開發技術要點
原創案例細緻呈現作者實際開發經驗
內容簡介
iOS是移動開發三大平颱之一。是DevDiv移動開發社區版主、資深會員繼成功推齣《移動開發全平颱解決方案——Android/iOS/Windows Phone》和《Windows Phone開發實戰體驗(應用+遊戲)》後的又一力作。
《iOS開發實戰體驗》章節設置全麵涵蓋iOS應用開發技術要點,原創案例細緻呈現作者實際開發經驗。具體包括iOS開發框架、Object-C高級知識、MVC設計和Push消息、視圖高級使用技巧、數據持久化、TableView使用、文件I/O、硬件和通信、iOS多媒體、定位和地圖、網絡編程、連接到互聯網、多綫程編程、2D和3D繪圖編程、調試和優化等內容。
作者簡介
DevDiv移動開發社區,DevDiv覆蓋移動開發主流平颱Android、iOS、Windows Phone、Windows 8、HTML5和Symbian等,集資訊、論壇、博客、獵頭服務、技術培訓於一體,是國內最具人氣的綜閤性移動開發社區。
目錄
第1章 iOS開發框架
1.1 蘋果産品和重要的事件
1.2 應用商店——App Store
1.3 iOS軟件的體係結構
1.3.1 核心操作係統層(Core OS)
1.3.2 核心服務層(Core Service)
1.3.3 媒體層(Media)
1.3.4 可輕觸層(Cocoa Touch)
1.4 應用程序運行周期
1.4.1 應用程序的生命周期
1.4.2 應用程序的入口
1.4.3 應用程序的委托
1.4.4 加載主Nib文件
1.4.5 事件處理周期
1.5 應用程序運行環境
1.5.1 應用程序沙箱
1.5.2 自動休眠定時器
1.6 iOS軟件設計規範
1.6.1 平颱間的差異
1.6.2 3種應用程序樣式
1.7 iOS開發工具——Xcode
第2章 Object-C高級知識
2.1 Object-C語言介紹
2.1.1 數據類型與錶達式
2.1.2 流程控製
2.1.3 類與結構
2.2 類彆(Category)介紹
2.2.1 認識類彆(Category)
2.2.2 擴展NSString
2.2.3 擴展NSDictionary
2.2.4 擴展NSArray
2.2.5 Object-C與C++混閤編程
2.2.6 靜態庫
第3章 MVC設計和Push消息
3.1 MVC框架設計
3.1.1 MVC設計思想
3.1.2 iPhone開發中的MVC
3.1.3 iPhone中MVC的實現
3.2 通知中心
3.2.1 NSNotification類
3.2.2 Notifications的常見誤解
3.3 Push機製
3.3.1 Push消息需要的條件
3.3.2 在代碼中使用Push消息
3.3.3 通過Mac發送Push消息
3.3.4 通過iPhone發送Push消息
第4章 視圖高級使用技巧
4.1 界麵工具Interface Builder
4.2 定製基礎控件
4.2.1 定製UIButton
4.2.2 定製UIPickerView以實現隱藏功能
4.3 動畫特效
4.3.1 UIViewAnimation動畫
4.3.2 使用公有CATransition實現動畫效果
4.3.3 使用私有CATransition實現動畫效果
4.4 頁麵布局——橫竪屏處理
第5章 數據持久化
5.1 Plist文件操作
5.2 NSUserDefaults操作
5.3 SQLite數據庫操作
5.4 Core Data文件操作
5.4.1 CoreData特性
5.4.2 為何要使用Core Data
5.4.3 關於Core Data的常見誤解
5.4.4 建立數據庫模型
5.4.5 創建實體類
5.4.6 數據庫操作
第6章 TableView使用
6.1 UITableView的組成及樣式
6.2 UITableView的定義
6.3 UITableView的數據源
6.3.1 UITableViewDataSource協議
6.3.2 錶格視圖的實現
6.3.3 錶格單元
6.3.4 創建錶格單元的數據源
6.4 UITableView的委托
6.5 UITableView的編輯
6.6 UITableView實現氣泡效果的錶格
6.7 UITableView拖動以顯示更多數據
第7章 文件I/O
7.1 文件係統
7.2 文件管理
7.2.1 讀取並顯示對應目錄下的文件
7.2.2 獲取文件屬性信息
7.2.3 創建文件夾
7.2.4 創建文件
7.2.5 刪除文件
7.3 本地數據存儲規則
第8章 硬件和通信
8.1 攝像頭
8.1.1 拍照
8.1.2 攝像
8.1.3 定製拍照界麵
8.2 加速度計
8.2.1 加速度計原理
8.2.2 加速度計使用
8.3 陀螺儀
8.3.1 陀螺儀原理
8.3.2 陀螺儀使用
8.4 調用通訊錄
8.4.1 讀取通訊錄
8.4.2 編輯通訊錄
8.5 打電話
8.6 發短信
8.7 發郵件
第9章 iOS多媒體
9.1 圖像
9.1.1 加載UIImage
9.1.2 UIImageView
9.1.3 訪問照片
9.2 聲音
9.2.1 System Sound Services
9.2.2 音頻
9.3 視頻
第10章 定位和地圖
10.1 基礎知識
10.2 iPhone定位方法
10.3 MKReverseGeocoder?地理位置反嚮編碼
10.4 LBS應用的類型
10.5 榖歌地圖
10.5.1 在地圖上增加大頭針標注的方法
10.5.2 在地圖上畫綫
第11章 網絡編程
11.1 iOS網絡編程
11.1.1 NSURLConnection
11.1.2 網絡編程示例
11.2 ASIHTTPRequest
11.2.1 使用ASIHTTPRequest
11.2.2 ASIHTTPRequest使用示例
11.3 檢查網絡狀態
11.3.1 SCNetworkReachability
11.3.2 Reachability
第12章 連接到互聯網
12.1 使用UIWebView
12.2 解析XML
12.2.1 iOS下的XML解析庫
12.2.2 NSXMLParser
12.2.3 第三方解析器
12.2.4 編寫簡單天氣解析應用
12.3 解析JSON
12.3.1 iPhone的JSON
12.3.2 JSON解析庫
第13章 多綫程編程
13.1 UNIX多綫程機製的使用
13.2 NSThread創建多綫程的方法
13.2.1 綫程的創建與啓動
13.2.2 綫程的同步與鎖
13.2.3 綫程的交互和其他控製方法
13.2.4 綫程的睡眠
13.3 綫程池NSOperationQueue
13.3.1 創建綫程操作NSOperation
13.3.2 任務控製
13.4 生産者—消費者模型
13.4.1 使用@synchronized
13.4.2 使用NSLocking協議
第14章 2D和3D繪圖編程
14.1 Quartz 2D
14.1.1 畫布(Canvas)
14.1.2 繪圖上下文(Graphics Context)
14.1.3 Quartz 2D數據類型
14.1.4 圖形狀態
14.1.5 Quartz 2D坐標係統
14.1.6 內存管理
14.1.7 繪製圖形圖像
14.1.8 繪製OpenFlow效果的倒影
14.2 3D繪圖OpenGL ES
14.2.1 OpenGL與OpenGL ES簡介
14.2.2 OpenGL ES在iPhone繪圖中的應用
第15章 調試和優化
15.1 常見錯誤
15.1.1 版本錯誤
15.1.2 證書錯誤
15.1.3 編寫錯誤
15.1.4 導入錯誤
15.2 調試跟蹤
15.2.1 使用調試器
15.2.2 使用日誌
15.3 使用Instruments
精彩書摘
業務模型還有一個很重要的模型,那就是數據模型。數據模型主要指實體對象的數據保存(持續化)。比如將一張訂單保存到數據庫,需要時從數據庫獲取訂單。我們可以將這個模型單獨列齣,所有有關數據庫的操作隻限製在該模型中。
(2)視圖(View)層
視圖即為用戶交互界麵。對於Web應用來說,可以是HTML界麵,也有可能是XHTML、XML和Applet界麵。隨著應用復雜程度和規模的提升,界麵的處理也變得越來越有挑戰性。一個應用可能有很多不同的視圖,MVC僅限於視圖上數據的采集、處理以及用戶的請求,而不包括視圖上業務流程的處理。業務流程交由模型(Model)處理。比如一個訂單的視圖隻接受來自模型的數據並進行顯示,以及將用戶界麵的輸入數據和請求傳遞給控製器和模型。
(3)控製器(Controller)層
控製器主要負責從用戶接收請求,並將模型與視圖整閤在一起,共同完成相關任務。它像一個分發器,清楚地告訴開發者,可以選擇什麼樣的模型和什麼樣的視圖,完成什麼樣的用戶請求。控製層本身不做任何的數據處理,例如用戶點擊一個鏈接,控製層接受請求後,並不處理業務信息,隻是把用戶的信息傳遞給模型,告訴模型做什麼,然後選擇符閤要求的視圖返迴給用戶。因此,一個模型可能對應多個視圖,一個視圖也可能對應多個模型。
2)MVC的優點
MVC要求對應用分層,雖然會增加額外的工作,但産品的結構清晰,其應用通過模型可以得到更好的體現。具體錶現如下:
①具有多個視圖對應一個模型的能力。在目前用戶需求快速變化的情況下,可能希望通過多種方式訪問應用。例如,訂單模型可能有本係統的訂單,也有網上訂單,或者其他係統的訂單,不管是哪種,對訂單的處理都是一樣的,也就是說訂單的處理是一緻的。按MVC設計模式,一個訂單模型及多個視圖即可解決問題。這樣既減少瞭代碼的重復,又減少瞭代碼的維護量,一旦模型發生改變,也易於維護。
②由於模型返迴的數據不帶任何顯示格式,為此這些模型也可直接應用於接口。
③由於一個應用被分離為三層,因此有時僅改變其中的一層就能滿足應用的變化需求。當應用的業務流程或者業務規則改變時隻需改動MVC的模型層,其他兩層可保持不變。
④由於控製層是把不同的模型和不同的視圖組閤在一起完成不同的請求,因此,控製層可以說是包含瞭用戶請求權限的概念。
⑤MVC模式有利於軟件工程化管理。由於不同的層各司其職,每一層的不同應用間具有某些相同的特徵,有利於通過工程化、工具化産生管理程序代碼。
3)MVC的不足
MVC的不足體現在以下幾個方麵:
①增加瞭係統結構和實現的復雜性。對於簡單的界麵,如果嚴格遵循MVC模式,使模型、視圖與控製器分離,會增加結構的復雜性,並可能産生過多的更新操作,降低運行效率。
②視圖與控製器的聯係仍過於緊密。視圖與控製器是既相互分離又確實聯係緊密的部件,沒有控製器,視圖的應用會很有限,反之亦然,這樣就妨礙瞭它們的獨立重用。
③視圖對模型數據的訪問效率比較低。依據模型操作接口的不同,視圖可能需要多次調用纔能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也降低瞭操作性能。
……
前言/序言
蘋果iOS係統已經曆5年多17個版本的更新,其在多代iPhone、iPad和iPod設備上取得巨大成功,目前已經成長為市場上影響力最大、功能最豐富、生態最完整的移動操作係統。
iOS的成功得益於蘋果公司對移動互聯網的深刻理解,蘋果公司始終專注於用戶體驗與服務,並通過平颱整閤構建瞭完整的應用生態鏈。iOS從誕生之初即專注用戶體驗與服務的提升,通過不斷的技術革新,一次次引領著UI交互方式的變革。比如,Siri技術就是 iOS5 最大的亮點,實現瞭語音控製輸入功能,可以通過Siri使用語音提問和評論,並且可以與包括日曆等在內的所有應用通信。同時,新“retina”顯示屏像素要比曆史版本的顯示屏像素高齣3倍左右,將用戶體驗提升到前所未有的高度,同時,也拉大瞭與競爭對手之間的距離!
APP Store是蘋果公司構建應用生態鏈的關鍵形式,它讓眾多的開發者找到瞭自己的商業模式和商業機會,而蘋果公司因此積纍瞭龐大數量的應用。雲服務iCloud讓所有的iOS設備實現瞭互聯互通,通過iCloud,使用同一賬號的用戶可以在不同iOS設備上同步信息和APP,實現文件備份、存儲等功能。可以看齣,以iCloud為“媒”,統一不同設備係統平颱是蘋果公司的既定戰略,蘋果公司在平颱整閤上已經邁齣瞭堅實的一步。
在iOS過去 5 年多時間裏,業界對蘋果公司的疑問從“這是智能手機嗎”發展到瞭“它可以代替PC”嗎,可見其對智能手機發展的貢獻,現在已經沒有人懷疑以iOS引領的新一代智能手機將成為最重要的個人計算終端、個人娛樂終端和個人通信終端,其地位將與傳統 PC分庭抗禮。蘋果公司依靠其強大的垂直一體化戰略,不僅通過iPhone、iPad等産品賺取瞭高額的利潤,同時,通過吸引開發者不斷地提供創新的應用,為蘋果公司源源不斷地注入活力。
此外,值得關注的是,蘋果公司並不單純是“以質取勝”,在數量上,蘋果公司也有望在未來幾年實現對Windows 設備(安裝微軟Windows操作係統的設備)的反超。相關統計數據顯示:過去,Windows設備在同蘋果設備的銷量對比上,一直占據絕對優勢,這一優勢在2000年左右曾經達到過一個峰值,每銷售50颱Windows設備纔售齣一款蘋果設備。但是,隨著iPad和iPhone等一係列基於移動互聯産品的問世,這一數字比例在急劇減小,截止目前,Windows設備與蘋果設備的銷量比例約為2∶1,分析師稱,蘋果設備數量有望在未來兩年內超過微軟。
當前,基於iOS的應用具有廣闊的前景和良好的發展趨勢。希望廣大開發者藉iOS之勢,利用《iOS開發實戰體驗》及書中提供的相關代碼,快速進入iOS開發領域,實現開發者夢想!
中國科學院博士、博士生導師,軟件研究所研究員 金蓓弘
iOS開發實戰體驗 下載 mobi epub pdf txt 電子書