內容簡介
《iOS編程(第三版)》全麵細緻地講解Cocoa Touch的基礎知識,深入解讀並剖析在開發iPhone及iPad應用時可能遇到的各種問題,並揭示如何高效地使用Objective-C和Xcode順利完成iPhone及iPad應用開發之旅。主要內容有:學習Objective-C語言的細節以及麵嚮對象程序設計理念。理解Xcode工程的結構和生命周期的各個階段。瞭解Cocoa的關鍵概念,例如,類之間的聯係、接收事件以及模型-視圖-控製器架構。學會管理、繪製、組閤視圖和層,並創建動畫。熟悉視圖控製器以及它們之間的聯係,管理nib和串聯圖。深入剖析所有的基本界麵對象,例如,滾動視圖、錶格視圖和控件。探索Cocoa框架中的聲音、視頻、傳感器和地圖等功能。使用綫程和網絡等高級功能。
作者簡介
Matt Neubury博士,自1968年以來就是一名軟件開發工程師,精通OSX和iOS上的應用開發。他既是《Mac Tech》雜誌的編輯,也是TidBITS的長期特約編輯。在O‘Reilly齣版瞭的圖書有《Frontier:The Definitive Guide》、《REALbasic:The DefinitiveGuide》,以及《Apple Script: The Definitive Guide》等。
內頁插圖
目錄
前言
第一部分 語言
第1章 C語言的必備知識
第2章 麵嚮對象的編程
第3章 Objective—C語言對象與消息
第4章 Objective—C類
第5章 Objective—C實例
第二部分 集成開發環境
第6章 Xcode工程的解析
第7章 nib管理
第8章 文檔
第9章 項目的生命周期
第三部分 Cocoa
第10章 Cocoa類
第11章 Cocoa事件
第12章 訪問器和內存管理
第13章 數據通信
第四部分 視圖
第14章 視圖
第15章 繪圖
第16章 圖層
第17章 動畫
第18章 觸摸
第五部分 界麵
第19章 視圖控製器
第20章 滾動視圖
第21章 錶格視圖和集閤視圖
第22章 彈齣框和分割視圖
第23章 文本
第24章 Web視圖
第25章 控件和其他視圖
第26章 模態對話框
第六部分 框架
第27章 音頻
第28章 視頻
第29章 音樂庫
第30章 圖片庫和拍攝圖像
第31章 地址簿
第32章 日曆
第33章 郵件和消息
第34章 地圖
第35章 傳感器
第七部分 其他主題
第36章 持久性存儲
第37章 網絡基礎
第38章 綫程
第39章 撤銷
第40章 結束語
精彩書摘
一般情況下,你必須警惕具有獨特內存管理行為的Cocoa對象,這種行為通常會在文檔中明確說明。例如,UIWebView的文檔警告說:“在釋放一個已設置瞭委托的UIWebView實例前,你必須首先設置其委托屬性為nil。”而一個CAAnimation對象會保留其委托,這是個例外,如果你沒有意識到這點,則可能會導緻齣錯。
也有一些Apple文檔沒有給齣考慮特殊內存管理的任何警告,但ARC本身由於在block中使用瞭self會警告可能存在保留環。再一次提醒,weak—strong dance可能是你最好的防禦。一個執行UIPageViewController的實例方法setViewControllers:direction:animated:completion:的結束處理函數示例,編譯器將發齣警告,“Capturing‘self’ strongly in thisblock is likely to lead to a retain cycle” (偵測到此block中‘self’的強引用,可能導緻保留環)。由於使用瞭weak—strong dance,你反而獲得瞭self的弱引用。
nib加載和內存管理
在iOS中,當nib加載時,係統實例化後的頂級nib對象將被自動釋放。所以如果有人沒有保留它們,它們將很快像一團煙霧般消失。為防止這種情況的發生,有兩種主要的策略:
保留與outlet圖
形成一個內存管理圖:每個頂級對象由另一個頂級對象保留(當然,不會形成保留環),File’s Owner作為內存管理圖的開始。因此,File’s Owner代理有一個到頂層對象的outlet;當nib加載和該頂級對象被分配給實際nib所有者實例相應的實例變量(第7章)時,它就被保留下來。如果你安排的保留鏈正確,需要被保留的所有對象將都會被保留(圖12—1)。這就是加載nib時你通常會使用的策略。
……
前言/序言
《iOS編程(第三版)[Programming iOS 6]》是一本麵嚮希望掌握iOS設備應用程序開發的開發者的實用指南。本書的宗旨是為讀者提供堅實的基礎,使其能夠自信地構建功能豐富、用戶體驗齣色的iOS應用。本書深入探討瞭Objective-C編程語言的核心概念,並將其與iOS SDK緊密結閤,使讀者能夠理解並運用Cocoa Touch框架的力量。 本書首先從Objective-C的基礎知識入手,講解瞭其語法、對象模型、消息傳遞機製、分類、協議以及內存管理等關鍵概念。這些是構建任何iOS應用都不可或缺的基石。讀者將學習如何定義類、創建對象、實現繼承和多態,以及如何有效地管理內存,避免常見的內存泄漏問題。Objective-C的動態特性將得到充分的闡釋,幫助讀者理解其在iOS開發中的重要性。 在掌握瞭Objective-C的精髓之後,本書將帶領讀者進入iOS SDK的世界。讀者將深入瞭解Cocoa Touch框架,包括其主要的組件和架構。UIKit框架作為構建用戶界麵的核心,將得到詳盡的講解。本書將詳細介紹`UIView`、`UIViewController`、`UINavigationController`、`UITabBarController`等核心UI元素的用法,以及如何使用Interface Builder進行界麵布局和設計。讀者將學習如何創建各種控件,如按鈕、文本框、列錶、圖像視圖,並瞭解如何響應用戶交互,實現流暢的用戶體驗。 多層視圖控製器管理(Multiple View Controller Management)是iOS應用導航的關鍵。本書將詳細闡述`UINavigationController`的棧式導航模型,以及如何通過推入和彈齣視圖控製器來實現層級化的導航。對於更復雜的導航模式,例如標簽欄導航,本書將深入講解`UITabBarController`的用法,使讀者能夠設計和實現直觀的多選項卡界麵。 數據持久化是幾乎所有應用程序都會麵臨的重要問題。本書將全麵介紹iOS中各種數據持久化方案,包括UserDefaults、文件係統存儲、Core Data以及Realm數據庫。讀者將學習如何選擇最適閤自己應用場景的數據存儲方式,並掌握如何在應用中實現數據的讀取、寫入、更新和刪除操作。Core Data作為Apple官方提供的高級數據管理框架,將得到重點講解,包括其對象圖管理、謂詞查詢、關聯對象以及版本遷移等高級特性。 網絡通信是現代iOS應用不可或缺的一部分。本書將深入講解如何使用`NSURLConnection`(或更現代的`URLSession`)進行HTTP網絡請求,包括GET、POST等常用請求方法。讀者將學習如何處理服務器響應,解析JSON或XML數據,以及如何處理網絡錯誤和超時。此外,書中還會探討一些與網絡相關的安全問題,例如HTTPS的使用。 多綫程和並發是提升iOS應用性能和響應能力的關鍵。本書將詳細講解GCD(Grand Central Dispatch)的使用,包括串行隊列、並發隊列、主隊列以及異步和同步操作。讀者將學習如何將耗時的操作放到後颱綫程執行,避免阻塞主綫程,從而保持UI的流暢和響應。還會涉及Operation Queues,提供更細粒度的綫程控製。 此外,本書還將觸及iOS開發的許多其他重要方麵,包括: 用戶界麵設計原則: 強調遵循Apple的設計指南,創建符閤iOS生態係統風格的應用。 觸摸事件處理: 學習如何響應用戶的觸摸手勢,實現平滑的交互。 數據綁定和MVC模式: 深入理解MVC(Model-View-Controller)設計模式,以及如何在iOS應用中有效地應用它。 高級UI控件: 介紹如`UITableView`和`UICollectionView`等用於展示大量數據的強大控件,以及如何高效地管理和渲染它們。 推送通知: 講解如何集成Apple的推送通知服務,嚮用戶發送實時消息。 定位服務: 學習如何獲取設備的地理位置信息,並將其應用於應用中。 多媒體處理: 簡要介紹如何集成AVFoundation框架,處理音頻和視頻。 單元測試和調試: 提供關於如何編寫有效的單元測試以及如何使用Xcode的調試工具來查找和修復bug的建議。 本書以實踐為導嚮,通過大量的代碼示例和逐步講解,幫助讀者將理論知識轉化為實際的開發技能。讀者將從零開始,逐步構建齣各種不同類型的iOS應用,涵蓋從簡單的工具應用到更復雜的數據驅動型應用。本書的目標是讓讀者在完成閱讀後,能夠獨立地構思、設計、開發和發布自己的iOS應用,並具備持續學習和適應iOS平颱未來發展變化的能力。 《iOS編程(第三版)[Programming iOS 6]》並非一本隻關注錶麵特性的速成指南,而是緻力於為讀者打下堅實的理論基礎和實操能力。通過深入理解Objective-C和iOS SDK的底層機製,讀者將能夠更有效地解決開發過程中遇到的各種挑戰,並創造齣真正優秀的用戶體驗。這本書是所有渴望在iOS開發領域取得成功的初學者和進階開發者的必備參考。
我是一名已經有幾年Swift開發經驗的iOS開發者,這次選擇《iOS編程(第三版)[Programming iOS 6]》,更多的是齣於對技術細節和底層原理的好奇。我希望這本書能夠提供一些關於Objective-C語言更深入的理解,例如它的內存管理機製、runtime的特性,以及Objective-C與Swift之間的橋接和交互。對於我來說,瞭解不同版本iOS係統下的API變化和演進也是很有價值的,看看第三版在iOS 6時期是如何講解這些內容,再結閤我現在的知識體係,或許能發現一些有趣的對比和思考。我關注的是書中是否有關於性能優化的探討,例如如何避免內存泄漏,如何提高應用的響應速度,以及如何利用GCD等技術提升並發處理能力。我也期待書中能提及一些早期iOS開發中的最佳實踐,或許其中一些理念至今仍有參考價值。