iPhone開發系列文章(一)-iPhone OS 概述

本人根據iPhone Dev Center 技術資料翻譯並總結而成

轉載請註明出處:http://blog.csdn.net/zhyzh2046/

 

iPhone OS由兩部分組成:操作系統和能在iPhone和iPod touch設備上運行原生程序的技術。由於iPhone是爲移動終端而開發,所以要解決的用戶需求就與Mac OS X有些不同,儘管在底層的實現上iPhone與Mac OS X共享了一些底層技術。如果你是一名Mac開發人員,你可以在iPhone OS發現很多熟悉的技術,同時也會注意到iPhone OS的獨有之處,比如多觸點接口(Multi-Touch interface)和加速器(accelerometer) 。雖然到現在我還沒有搭建起iPhone的開發環境,但是根據以往對iPhone的瞭解,有很多新鮮的技術是我需要學習的。比如,在軟件的設計中使用它的多觸點技術以及控制感應器的技術。下圖爲iPhone和iPod Touch,僅從外觀看就相當炫了。

 

在SDK發佈之前,第三方的程序是不能在iPhone上運行的(有些黑客可以運行第三方程序)。隨着SDK的發佈,iPhone的愛好者便可以開發在iPhone上運行的應用程序了。iPhone SDK包含了所需的資料和工具,使用這些工具可以開發、測試、運行、調試和調優程序以適合iPhone OS。XcodeIDE已經更新到支持iPhone OS的開發。除了提供代碼的基本編輯、編譯和調試環境,當在iPhone或者iPod touch設備上調試你的程序, Xcode還提供了運行點(launching point)功能。不知道這是怎樣一個功能,估計就是在實際設備上設置斷點,並可以看到運行的log信息。同時,Xcode還可以在iPhone模擬器中運行程序,模擬器就是指在Macintosh電腦上模擬基本的iPhone OS環境的平臺。這個我比較喜歡,因爲條件有限,只能從虛擬機上看看自己程序的效果,等有了實力再把程序放到真機上運行。模擬器對於學習iPhone的編程流程和語言是相當方便的。

這篇文章概述了iPhone OS基本特徵,可以幫你熟悉這個平臺。其實這篇文章基本上是從iPhone Dev Center翻譯過來的,但是不完全是。我將一些冗餘信息刪除並加上了自己的見解,如有瑕疵請指正。

iPhone OS技術分層

在iPhone OS中,底層系統架構和許多其它技術與Mac OS X中的技術是非常相似的。因爲iPhone OS的內核是基於Mac OS X 10.5中的Mach內核變化而來的。其實是對Mac OS X 10.5的Mach內核進行了相應的裁剪,並加上iPhone特有技術的支持而來的。內核之上是服務層,使用這些服務可以在平臺之上開發應用。圖1展示了而這些層的概圖。

Figure1 iPhone OS 技術分層

這樣的分層給開發帶來了多種選擇。下面兩層與硬件部分直接交互,例如,Core OS和Core Services層包含了iPhone OS的基本接口,包括文件的訪問、底層數據類型、Bonjour服務和網絡的Sockets等。這些接口大部分是基於C語言的,包括的技術有:Core Foundation、CFNetwork、SQLite、POSIX 線程的訪問和UNIX sockets。我覺得iPhone的內核應該是用C寫的,而且Mach的內核是一種UNIX的內核,所以使用這兩層進行程序開發,就相當於使用Linux 的API進行程序開發,在這兩層,你可以使用你的代碼直接操作硬件,當然這需要你對較底層的開發比較熟悉。

上面兩層會有更多高級的技術,這些技術使用基於C和基於Objective-C的混合接口。比如,Media層包含了支持2D和3D繪圖、音頻和視頻的基本技術。這一層包含了基於C的技術:OpenGL ES, Quartz, and Core Audio。同時也包含Core Animation,這時一種基於Objective-C的高級的動畫引擎。Objective-C語言是C的面向對象的擴展,在這裏可以看作是Linux中QT庫一樣,你可以像使用QT的類和接口那樣來使用基於Objective-C的接口,這些都是使用Objective-C語言封裝好的,它可以縮短開發的時間,但前提是要熟悉Objective-C語言。

最上面一層-Cocoa Touch層中,大部分的技術使用Objective-C。這層中的許多框架爲你的程序提供了基礎的底層構造。比如,Foundation框架爲集合、文件管理和網絡的操作提供了面向對象的支持。UIKit框架爲你的程序提供可視化的底層構架,包括窗口、視圖、控件類和管理這些對象的控制器。這一層中的其它框架允許你訪問用戶的聯繫人和圖片信息,以及設備上的加速器和其它硬件特徵。在看多幾個iPhone的程序之後,發現使用最多的就是UIKit框架,它提供了一個簡單的圖形界面程序所需要的控件,所以你可以是不熟悉Linux或Unix開發的程序員,你只要學會UIKit框架中控件的使用方法,你就可以創建iPhone程序。

新項目的出發點應該是Cocoa Touch層,特別是UIKit框架。當選擇何種附加技術時,建議你從高層的框架開始,需要時,則應求助於低層的框架。如果要在你的程序中使用最少的工作量來支持標準的系統行爲,更高層的框架會使這一過程變得簡單。當要實現更高層中沒有提供的定製行爲時,這是唯一使用更低層框架的時間。

iPhone OS的更詳細的技術概覽,請參考iPhone OS編程指南

個人認爲,初學者應該從最上一層開始,尤其是從沒有Mac開發經驗的人。上層的框架會節省你開發的時間,並且上層的框架已經非常強大,可以基本滿足一個簡單程序所需的所有技術。

爲iPhone OS編寫代碼

 iPhone的SDK可以創建運行在iPhone OS上的圖形界面程序。當運行自己開發的程序時,程序會駐留在主屏幕上,和其它系統程序是一樣的,比如Photos 、Weather和Clock。程序運行時,除了內核和一些底層後臺程序,它是唯一運行在系統之上的程序。程序運行時,會佔據整個屏幕,用戶能看到的也只有你的程序。當用戶點擊Home按鈕,程序退出的同時顯示系統的主頁面。獨佔系統的優勢在於,它提供了底層系統資源的完全訪問權利。你可以利用內置的硬件,如加速器、攝像頭和圖形硬件來只運行你的代碼。

由於用戶與iPhone和iPod touch設備的交互方式和與Mac OS X的交互方式有本質的不同,所以設計應用的方式也必然不同。主要的區別就是用戶的輸入方式有很大不同,在Mac OS X上是使用鍵盤和鼠標來捕捉用戶的輸入,系統給予響應。在iPhone上,OS要通過觸摸屏捕捉用戶的輸入,同時要處理用戶的多觸點輸入。iPhone程序中,在顯示內容時沒有單獨文件窗口的概念,程序的所有數據顯示在單一的窗口中。這就產生了新的視圖和控件,以組織好的樣式來呈現你的應用程序數據。另外,很多視圖和控件會與Mac OS X中有所不同。大部分變化是透明的,但是有一些需要你重新考慮組織和呈現數據的方式。

對於傳統桌面應用來說,iPhone OS的事件處理模型也是一項重要的里程碑。iPhone OS引入了觸摸事件的概念,而不是依賴傳統的鼠標和鍵盤事件。觸摸事件隨時發生,並且可以和一個或多個觸摸事件結合。觸摸事件可以用作與內容的簡單交互,如選擇或拖拽Item,或者可以用作檢測複雜的姿勢和交互動作,比如重擊或者打開縮放和關閉縮放動作。(例如,在Photos程序中用作縮小、放大的動作)。其實,這是iPhone的一大創新,在自己的程序設計與架構中,應該儘量利用這一優勢,給用戶更好的使用體驗。

當開始開發時,最初會用到的框架是FoundationUIKit框架。這兩個框架提供了所有iPhone應用的關鍵服務。當要精煉你的應用時,應該研究系統的其它框架,看看它們提供了哪些服務。每個框架的文檔包含相關概念資料的鏈接,這些會幫你學習更多使用這個框架的知識。

從哪裏開始

利用Xcode提供的內置項目模板可以相當簡單地創建簡單的應用程序,但是,創建實用且漂亮的應用需要你用一些時間來通讀現有文檔。最少你應該花些時間來通讀iPhone Dev Center中其它幾篇引導文章,它們研究了工具和開發應用的流程。最爲初學者,現在的任務就是學習這幾篇入門文章,然後能運行一個Helloword程序,這就足夠了。

如果你不熟悉iPhone OSMax OS X的開發,就必須要先理解基本的設計模式和iPhone OS的約定。開發iPhone的程序要儘量實用系統提供的框架,這樣你開發的程序才能在iPhone中流暢地運行。如果深入學習框架的基本功能,你會發現在實際中創建自己的應用遠比簡單地學習基本設計模式困難得多。Cocoa基礎指南包含了每個iPhone開發人員需要了解的基本知識。這份文檔介紹了Objective-C編程語言的基礎知識、編程習慣、UIKit用到的設計模式以及許多其它系統框架。

一旦理解了創建iPhone應用的基本習慣,你在開發過程中可以在iPhone OS編程指南中查閱到詳細資料。這個指南包含了怎樣編寫iPhone應用的關鍵概念上的和麪向任務的資料,怎樣顯示用戶界面、處理事件和利用主要的iPhone OS特徵的例子。同時,它描述了全部開發過程並說明如何使用Xcode編譯和運行應用。

iPhone OS編程指南之外,你最好也通讀現有的實例代碼。iPhone OS帶有大量全功能的例子,它會展示怎樣使用現有技術去創建真實的應用。你可以使用這些示例作爲自己應用的出發點,或者通過它們,可以學習更多怎樣使用特定特徵的知識。在iPhone Dev Center中有許多示例代碼,都很簡單,但是這有助於你學習iPhone程序的框架以及Objective-C語言。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章