天天看點

[試譯]iOS 5 Programming Pushing the Limits前言一章

四個月前為

iOS 5 Programming Pushing the Limits: Developing Extraordinary Mobile Apps for Apple iPhone, iPad, and iPod Touch

一書試譯的前言部分内容:

前言

Apple過往的做法是輪番進行使用者關注的和開發者關注的釋出,iOS 5帶來的好消息全是與開發者相關的。單是Automatic Reference Counting (ARC)的加入就已經值得開發者們做一次更新了,這一次改進,Apple不但消除了iOS應用中導緻崩潰的第一大原因,而且代碼還變得更易于編寫,運作得更快了。就您的應用程式來說,您唯一能做的、也最好要做的一件事情是轉向使用ARC,這是自自動釋放池之後,Objective-C最被看重的一個功能了。

不過iOS 5也還為開發者增加了不少的功能,從iCloud到自動資料保護都有,作業系統現在接手了更多的剛性問題,讓開發者集中精力做好應用的開發。

對于開發者來說,最明顯不過的是新的Xcode,其有些功能做了改進,有些僅是變換了做法,有些則會讓您發瘋。然而,這就是新出的玩法,每個人都要習慣它,本書會幫您理出個頭緒來的。

若您已做好了使用最新Apple版本的準備,準備挑戰應用程式設計的極限,那麼本書能夠幫你達成這一目标。

本書的目标讀者

這并非一本入門書,用來學習Objective-C的書和手把手教您使用Interface Builder的書外面多得是,這些都不是本書要做的事情。本書假設您已經有了一些自學的或是課程傳授的iOS開發經驗,且希望是至少寫過大半個應用程式的,即使是尚未送出的應用程式也行。若您打算超越基礎的做法,了解一些最佳實踐,以及作者在編寫實用的應用程式過程中所收獲的一些尚未公開的實戰經驗,那麼本書就是為您準備的。

本書也不是僅列出各種做法那麼簡單,書中有大量的示例代碼,但其目标是幫助了解如何設計、編寫和維護優秀的iOS應用程式。本書更多的是闡述原理而非僅說明做法,您不僅會了解到許多的設計模式和編寫可重用代碼的做法,而且還會了解到許多的文法和新的架構。

書中所有例子都是使用Xcode 4來編寫的,如果您不熟悉Xcode也無需擔心,第2章會助您一臂之力的。

本書涵蓋的内容

iOS平台一直在向前發展,故本書中的大部分例子都用到了iOS 5,所有的例子都使用了Automatic Reference Counting。除了少數幾個地方之外,本書都不再考慮向後相容。如果您發行的一些代碼年代過久,需要向後相容,那麼您大概也會知道該如何處理。本書關心的是使用所提供的一些最好功能來編寫出一些最佳的應用。

本書重點關注iPhone 4和iPad 2,書中的大多數主題都可适用于初版的iPad、iPod touch、iPhone 3GS和Apple TV上。撰寫本書之時,iPhone 5和iPad 3尚未釋出,但書中提及的每樣功能也都應該适用于它們。第12章專門談論不同平台間的差異處理。

本書内容的組織方式

iOS有着異常豐富一個工具集,從UIKit一類的高層架構到Core Text一類的非常底層的工具都有。一個目标的達成通常會存在多種做法,作為開發者,如何選擇最合适的工具來開展工作呢?

本書分别介紹一些日常做法和用于特殊目的做法,這有助于您找出最适合每種問題的解決方案。您将了解每種架構存在的原因,架構之間的關聯方式,以及選擇這一個而非另一個架構的時機。然後您就會懂得任何最大程度地利用每種架構來解決它所針對的那一類問題。

本書分為四個部分,從最常見的一些工具開始說起,逐漸談到最強大的一些功能。

第1部分:新增功能

若您已對iOS 4已有所了解,那麼就把這部分内容當成是iOS 5新功能的一個快速入門。

       第1章:新增功能——iOS加入了許多新的功能特性,您可通過這一章快速了解這些可用的功能。

       第2章:熟悉Xcode 4——Apple近期重新設計了Xcode的接口,您需要花費些功夫來适應它。本章向您展示了如何最大限度地發揮它的作用。

第2部分:充分利用日常工具

    作為一個iOS開發者,想必您已經見識過了各種各樣的常用工具,從消息通知到表視圖到動畫層,這些無不是。但是,您是否已經最大程度地發揮了它們的潛能呢?在這部分内容中,您會從幾個資深開發者那裡了解到Cocoa開發的一些最佳做法。

   第3章:Objective-C的日常工具——若您已準備好要晉級Objective-C下一階段的開發,本章會向您推介經驗豐富的開發者日常使用的一些工具,這些工具增強了應用的設計、可維護性和可重用性。

  第4章:松散耦合:Cocoa設計模式——Cocoa依托于一組常見的相容的設計模式,在了解了它們的設計意圖之後,您就能夠按Apple的行事方式來解決問題了。

       第5章:正确使用表視圖——表視圖有可能是iOS中最複雜也是最常用到的UI元素,它們可讓設計變得既簡單又優雅,但卻會給不了解其工作原理的開發者帶來一頭霧水。您會在本章中了解到它們的正确用法,以及既覺諸如無限滾動一類的特殊問題的解決方法。

       第6章:更好的繪制做法——自定義繪制會吓退許多新入門的開發者,但這卻是建構出漂亮而又能快速顯示的使用者界面的關鍵環節,在本章中,從UIKit到Core Graphics,您都可找到一些可用的繪制做法,并且了解如何優化這些做法,在保證最佳繪制效果的同時保持一個較快的繪制速度。

       第7章:層層剖析:Core Animation——iOS裝置有着一些令人贊不絕口的動畫設施,它有一個功能強大的GPU和高度優化的Core Animation,您可以建構出一些極具吸引力、能打動人心的、足夠直覺的界面。在本章中,您将超越基礎的做法,去領會動畫的一些奧妙。

       第8章:處理煩人的錯誤——您努力去編寫完美的代碼,但有時事情卻不如人意,應用的高下之分就展現在其響應異常的做法上。您在本章中會學習一些常見的錯誤處理模式,學習如何記錄日志、如何讓代碼在面對異常時更具有彈性。

第3部分:适手的工具

有些工具幾乎是在開發每個應用時都要用到的,有些工具則隻是時不時地要用一下。在這部分内容中,您了解到的是一些稍有針對性的工具和技術。

第9章:多任務的控制——多任務是許多應用的重要組成部分,您要了解的是在應用運作時如何同時進行多項事情,以及何時應用會轉入背景狀态。

第10章:REST的最佳實作——基于REST的服務是現代應用的支柱,您在本章中要了解的是iOS中的一些實作REST的最佳做法。

第11章:使用安全服務進行防護——使用者安全和隐私在現如今是最重要的,您在這裡要了解的是如何使用鑰匙串、證書和加密措施來保護應用和使用者資料免受入侵者的攻擊。

第12章:在多種i字頭的平台和裝置上運作——随着iPod touch、iPhone、iPad、Apple TV和源源不斷的各種新版本的出現,iOS的整體情況也是一年比一年複雜。做到編寫一次,随處運作還不夠,您的應用還得做到随處都保持最佳運作狀态才行。在這一章中您要了解的是如何讓應用适應硬體,如何做到充分地利用每一個平台。

第13章:國際化和本地化——雖然目前隻是想針對某個市場進行開發,但您可以事先完成一些瑣碎工作來友善日後向國際市場的過渡,在不中斷目前開發的情況下,還省卻了将來的花費和麻煩。

第14章:應用内購買的銷售模式——對于許多開發者來說,應用内購買還是個尚未開發的市場。使用者喜歡附加的功能,開發者則歡迎額外的收入。您在這一章中了解到的是一些在應用中實作這一重要功能的做法。

第4部分:超越極限

這部分内容就是本書的真正意義所在,您已經學習了一些基礎知識,了解了一些日常做法,現在要借用一些最先進的工具來超越這些極限,深入了解iOS的裡裡外外。

       第15章:Cocoa的最大訣竅:鍵-值觀察——許多功能強大的Apple架構都依賴于KVO(Key-Value Observing)獲得性能和靈活性,您在這一章中了解到的是如何利用KVO的靈活性和速度,以及學習使其如此透明化的技巧。

       第16章:換種想法:塊和函數式程式設計——許多開發者仍着迷于Objective-C中加入的塊(block)構造,它們在Apple架構互動方面很有用,同時還開啟了程式設計方面的一些新思路。迎接新的程式設計風格,在您的下一個項目中盡量利用它的好處。

       第17章:支援離線——網絡程式設計不容易,但更難的是提供一種無縫的離線體驗。您在本章學習的是如何以最佳方式來緩存資料,并把資料內建到網絡引擎中。

       第18章:花樣繁多的文本布局——從UIKit到Core Text,iOS顯示文本的做法那是琳琅滿目。在iOS中顯示富文本沒有什麼完美的解決方案,重要的是學會權衡取舍,這樣您才能選出合适的做法并加以正确使用。

       第19章:建構(核心)基礎——若說iOS功能最強大的架構,諸如Core Graphics、Core Animation、Core Text一類的Core架構都是。這些架構都依賴Core Foundation。您在本章中要學會的是如何使用Core Foundation的資料類型,這樣就可以利用iOS提供所有功能了。

       第20章:深入Objective-C——在做好了揭開Objective-C工作原理的準備之後,您将在本章中要了解的是如何直接使用Objective-C運作時來動态地修改類和方法,如何把Objective-C方法調用派發給C函數調用,以及如何控制系統,以一些奇妙的方式來擴充應用程式。

您可以跳過一些章節,隻關注自己最需要的那些主題。每章都是獨立的,除了需要用到Code Foundation資料對象(特别是Core Graphics、Core Animation和Core Text))的那些内容之外,在需要這些資訊時,這些章節會把您導向第19章“建構(核心)基礎”。

本書用到的軟體産品和工具

本書中的所有例子都是在Mac OS X 10.7和iOS 5上使用Xcode 4.2來開發的,您需要一個Apple開發賬戶來擷取大部分的工具和文檔,還需要一個開發許可來在iOS裝置上運作應用。

通路http://developer.apple.com/programs/ios進行賬戶注冊。

書中的大多數例子都可在随同Xcode 4.2一起發行的iOS Simulator上運作,在沒有Apple開發許可的情況下可使用iOS Simulator。

Mac OS X 10.6和10.7兩個版本上的Xcode 4.2之間有些差别,所有的例子都可以在10.6版本下運作。

Apple文檔查找

Apple在其網站和Xcode内部都提供了大量的文檔,文檔的URL位址會經常發生改變且都很長,本書通過标題而非URL來引用Apple文檔。若要查找Xcode中的文檔,按下Cmd-Option-?鍵,或是單擊Help | Documentation and API Reference。在Documentation Organizer中,單擊Search圖示,輸入文檔的名稱,然後從搜尋結果中選擇文檔。參見圖1,這是一個搜尋Cocoa編碼指南的例子。

圖1. 搜尋Cocoa的編碼指南

若要在Apple開發者站點上查找文檔,通路developer.apple.com,單擊Member Center然後登入。選擇iOS Dev Center,然後在Search Developer搜尋框中輸入文檔标題。

一般來說,線上文檔和Xcode文檔的是相同的,您可以獲得針對iOS和Mac兩個系統的搜尋結果,請確定選擇的是iOS版本的内容。許多iOS文檔就是它們在Mac中的相應内容的拷貝,偶爾會包含有iOS不支援的函數調用或是常量,本書會指出哪些功能在iOS上是可用的。

源代碼

在演練本書中的内容時,您可以選擇手工輸入所有的代碼,或是使用本書附帶的源代碼檔案,本書用到的所有源代碼都可在www.wrox.com/go/ptl/ios5programming上下載下傳。例如,您可從下載下傳源碼包中找出第18章的檔案夾,然後從SimpleLayout項目的CoreTextLabel.m檔案中找到下面的這段示例代碼:

CoreTextLabel.m (SimpleLayout)

- (id)initWithFrame:(CGRect)frame {

  if ((self = [super initWithFrame:frame])) {

    CGAffineTransform

    transform = CGAffineTransformMakeScale(1, -1);

    CGAffineTransformTranslate(transform, 0, -self.bounds.size.height);

    self.transform = transform;

    self.backgroundColor = [UIColor whiteColor];

  }

 returnself;

 }

書中顯示的一些代碼段是不全的,僅是用來幫助您了解相應章節的内容,在遇到此類情況時,您應該參考網上提供的代碼檔案,了解完整的源代碼内容。

繼續閱讀