iOS 大綱
iOS 由作業系統和應用技術構成。雖然和 Mac OS X 共用了很多技術,但是 iOS 是專門為了行動裝置而設計的。當然如果你以前做過 Mac OS X 的應用程式,你會發現很多相似之處,但是很多技術只能在 iOS 裡面使用,比如支援多觸點和遙感等。
iOS SDK 包含了 API ,文檔和一些工具 , 這些工具用來開發、測試、運行、調式和在 App Store 上發布應用。 iOS 的官方 IDE 是 Xcode,Xcode 可以編譯,測試和調式你的代碼,並且設定斷點在你的裝置上調式程式,當然在應用的開發階段你也可以使用 Xcode 上的模擬器來類比的你的 iOS 環境,同樣可以調式、編譯和運行。( 業界大型的 iPhone 遊戲更多的是用 VS C++ 利用 OpenGL 來開發的, Xcode 只是最後用來整合和測試的。)
這篇文章是從一個比較高的層面來講解 iOS 的架構,你也可以查看其他的文章協助你快速瞭解 iOS 的底層資訊。
文章大綱:
1.iOS 技術層級
2. 為 iOS 寫代碼
3. 開始 iOS 之旅
1.iOS 技術層級
iOS 核心層是基於 Mac OS X 的,他們有很多共同點基礎類。在核心層上面是服務層( iOS Services ),服務層( iOS Services )是為應用提供 API 的 .
Figure 1-1 iOS 技術層級
服務層( iOS Services )大部分是基於 C 語言寫的。核心層和服務層( iOS Services )包含了很多基礎性的類庫,比如底層資料類型 (low-level data types), Bonjour 服務( Bonjour 服務是指用來提供裝置和電腦通訊的服務) , 和網路連接類庫 (network sockets) 等等。服務層( iOS Services )包括了 Foundation 核心類庫, CFNetwork 類庫 , SQLite 訪問類庫 , 訪問 POSIX 線程類庫和 UNIX sockets 的通訊類庫,等等。
在服務層( iOS Services )的上層是多媒體應用程式層( Media layer ),多媒體應用程式層是用 c 語言和 Objective-C 混合寫成。多媒體應用程式層包含了基本的類庫來支援 2D 和 3D 的介面繪製,音頻和視頻的播放。這一層包括了一些基於 C 語言的技術,比如 OpenGL ES, Quartz, 和 Core Audio 。當然也包括了基於 Objective-C 的較高一層次的動畫引擎。
多媒體應用程式層( Media layer )上一層是( Cocoa Touch )層,這一層大部分代碼是基於 Objective-C 的。這一層提供了很多基礎性的類庫 Foundation ,比如提供了物件導向的集合類,檔案管理類,網路操作類等等。比如, UIKit 架構提供了可視化的編程方式,比如包含了 window, views, controls 和 controllers 管理這些類。當然 其他的類庫也提供了一些非常實用的功能,比如訪問使用者的通訊錄,照片集,重力感應器,和一些訪問硬體裝置的功能。
如果你想馬上開始做一個新項目,那麼你最好使用( Cocoa Touch )層,特別你準備使用 UIKit 架構的時候。使用進階別的架構比使用低層級的架構更加容易使用,建議只有當進階別的架構沒有現成的方法的時候,才考慮使用更低層級的架構。
更多的技術細節,查看 iOS Technology Overview .
2. 開始為iOS寫代碼
iOS SDK 支援建立一個圖形化的應用程式,這個建立的應用程式可以被建立在iphone的案頭上,並且是獨立於其他的程式,比片,天氣,時鐘。它會在一個獨立的沙箱裡,這個會在以後描述。當你的程式啟動並執行時候,你的程式會佔用整個iphone的介面。如果你開發過windows下的應用程式,你肯定熟悉什麼叫多文檔應用,很遺憾,iOS並不支援多文檔模式,iOS的應用只能在獨立的視窗下顯示,不能在一個應用裡多視窗切換。
在 iOS 中,事件處理模式和經典的案頭系統( windows )是不一樣的。經典的事件處理模式是相應滑鼠和鍵盤,因為 PC 的主要外設就是滑鼠和鍵盤。而 iOS 並沒有滑鼠和鍵盤,所以 iOS 的事件處理模式是基於觸摸的。一個觸摸事件可以發生在任何時間,也可以和其他觸摸事件組成另外一個事件,比如多觸點。這些觸摸事件既可以用來檢測簡單的操作,比如選擇和拖放某個項目,也可以檢測到複雜的操作,比如滑動(類似與刷卡的動作,在忍者水果中的切的效果)、捏開和捏攏(照片的放大、縮小操作)。
當你準備做一個 iOS 應用程式時,你不僅僅要考慮程式的代碼結構,基於什麼基礎構架,更重要的是考慮這個應用的使用者會怎麼使用它。 iOS 應用程式應該是操作和介面都簡潔的,而且關注於終端使用者的實際需求。記住,你的使用者很忙,他需求的是最快的獲得他所要的資訊,而不是花很多時間在一些華而不實的介面之間切換來切換去。所以請提供一個簡單的介面布局,並且把關鍵的資訊放在醒目的位置。在遊戲或者其他一些娛樂類應用,你可以考慮多增加一些互動性的技術,比如重力感應和網路攝影機技術,這在其他遊戲平台是不多見的。
當你第一次開發 iOS 應用的時候,你很可能只使用 Foundation 和 UIKit 架構,這兩個架構提供了基礎的 API 支援和一些關鍵的服務。不過當你想提升你應用程式的檔次的時候,你可能會需要集合其他一些架構。下面這些連結可以協助你學習更多的架構知識。
查看更多技術細節看 Foundation Framework Reference 和 UIKit Framework Reference .
3. 開始 iOS 之旅
建立一個簡單的 iOS 應用程式最簡單的是使用 Xcode 的模版,當然如果你希望你的應用程式非常好用而且介面美觀,你還是需要多閱讀一點相關的文檔。至少你應該閱讀一下如何使用 Xcode 和怎麼樣一步一步建立應用程式的文章,在官方的 iOS Dev Center 。
如果你是對 iOS 和 Mac OS X 一無所知,那麼你需要花點時間去理解平台的基礎設計模式和內部結構。因為只有當你的應用程式選擇了最給力的架構時候,你的應用程式才是最流暢最給力的。所以如果你花一些時間來選擇這些架構時,你可能會發現建立一個應用程式比學習基礎設計模式困難多了。每一個 iPhone , iOS 開發人員都需要瞭解的架構是 Cocoa Fundamentals Guide 。這個文檔講解了 Objective-C 語言和 UIKit 的設計模式,當然還有一些其他架構的內容 。
當你理解了基礎構架後,你可以查看這個文檔 iOS Application Programming Guide ,這個文檔提供了具體的開發細節和開發流程。這個文檔提供了重要的關於如何編寫 iPhone 應用程式的概念和任務為基礎的資訊,包含一些執行個體:怎麼建立使用者介面,事件處理和 iOS 的一些關鍵功能。並且還描述了整個開發過程,並解釋如何使用 Xcode 編譯和運行應用程式。
除了看這個文檔以外,你還應該瀏覽一些蘋果官方的程式碼範例。這些範例程式碼幾乎包含所有的 iOS 技術點,你可以使用這些範例程式碼開始你的應用程式也可以學習一下某些技術點的詳細用法。