iPhone OS(作業系統)包含了讓您的原生應用軟體能在iPhone及iPod Touch上順利運作的作業系統及技術。雖然他由MAC OS X作業系統上繼承了許多一般性的概念與很多基礎的技術,雖然使用者的需求有些許的不同,但iPhone的作業系統仍被設計為最適合行動裝置的使用。若您已經是MAC OS X作業系統的開發者,則您會發現這兩者有很多熟悉的技術,但您仍會發現,也有不少的技術是僅適用於iPhone作業系統的架構,如多重觸控的介面及加速計的支援等等。
iPhone 的SDK軟體發展套件包含了程式碼、開發資訊及您在開發過程中所需要的程式撰寫、軟體測試、軟體執行、程式除錯以及軟體最佳化調整等工具。而Xcode工具為了支援iPhone作業系統上的開發,因此也做了版本上的更新。除此之外,為了提供一個您程式碼基本的編輯、編譯與除錯的開發環境,Xcode也提供了一個進入點(launching point )讓您在iPhone與iPod Touch上測試您的程式,Xcode甚至允許您在iPhone的模擬器(註1)上執行您所撰寫的應用程式。
註1:iPhone模擬器是一個可在您的麥金塔電腦上模擬iPhone作業環境的平台。
這一篇文章提供了一個關於iPhone作業系統的基礎知識並幫助您對此平台能有正確的認識。您也能在iPhone Dev Center找到更多其他的文章來協助您快速的建立對iPhone應用程式的基本操作。同時,您也能利用這些文章來幫助並指引您學習iPhone的作業系統。
iPhone 作業系統應用技術層
圖1iPhone 作業系統應用技術層
在iPhone的作業系統中,基礎的系統架構以及許多的技術應用都和Mac OS X是相同的。而iPhone作業系統的核心也是基於Mac OS X內各式不同的Mach 核心。在此核心的最上面一層的服務是用來創建此平台上的應用,圖1展示了這些不同技術層的應用描述。
這些分層當您在撰寫您自己的程式碼時提供了不同的應用選擇。舉例來說,Core OS (作業系統核心)以及Core Services(服務核心)層包含了iPhone作業系統最基礎的介面,如檔案的存取、低階的資料型態、系統服務及網路通信協定等等。這些的介面大多以C語言為基礎並包含了Core Foundation、CFNetwork、SQLite、存取POSIX序列以及UNIX協定等等的技術。
而當您進入更高的一層,您會發現更進階的技術都是以C以及Objective-C 做為基礎的介面。舉例來說,Media layer包含了2D與3D的繪圖支援及音效與影片的處理。這一層包括了同樣以C為基礎技術的OpenGL ES、Quartz 及Core Audio。同時並包含了也是以進階Objective-C為基礎的動畫引擎Core Animation。
而在Cocoa Touch 這一層,大多數的技術是使用Objective-C。而這一層則提供了一個建構程式的最基礎架構。舉例來說,Foundation framework 提供了一個對集合、檔案管理、網路操作及其他物件導向應用的支援。而UIKit則提供了一個應用程式在視覺化的基礎架構,包含了視窗的classes、views、controls控制元件以及管理這些物件的控制器等等。在此層的其他frameworks(框架)則提供您存取iPhone內聯絡人及照片資訊,以及加速計狀態及其他硬體特徵等等。
對很多新的專案來說,Cocoa Touch layer是一個開始的起點,特別是UIKit framework。當您決定是否要使用其他的技術時,請由高階的framework開始,而當有需要的時候再來研究低階的framework。因為高階的framework能讓您用最少的力氣去達到支援標準的系統行為。而唯一您會去接觸低階的framework則是當您發現這些高階的framework 都無法提供您的需求時,此時您才必須利用更低階的技術來處理這些特別的動作或功能。
關於更多iPhone作業系統的詳細資訊,請見
iPhone OS Programming Guide.
為iPhone作業系統撰寫程式碼
iPhone SDK支援建立一個圖形化介面的iPhone原生應用程式,而您的應用程式將與iPhone內建的Photos照片、Weather天氣以及Clock時鐘等系統應用程式一樣,都是在iPhone的主畫面上可以找的到。當您的程式被執行的時候,除了iPhone系統核心及一些低階的服務之外,您的軟體就是系統唯一運作中的程式,此時,您的程式將佔滿整個iPhone的螢幕,而使用者的注意力也將停留在您程式所提供的畫面與功能上,而當使用者按下Home鍵的時候,您的程式會自動結束並再一次的回到iPhone的主畫面。讓程式獨佔系統是有優勢的,因為他能提供對系統資源的最完整控制,此外,您還能搭配您的程式碼去充份利用iPhone內建的加速計、攝影機以及繪圖卡等硬體。
使用者與iPhone或iPod Touch裝置溝通的方式基本上和Mac OS X有很大的不同,當然,在程式的設計上也是不太一樣。
在iPhone的程式中,沒有所謂的多重或分割視窗的概念,取而代之的是以單一視窗來顯示所有的內容,這能讓您用一個全新的views與controls來建立您的應用程式,並以一個組織性的管理來呈現您所提供的資料。除此之外,很多標準的views與controls,他的運作模式也和Mac OS X上的使用有些許的不同。而這大多數的改變是很明顯的,但有一些仍需要去重新思考一個新的方式來組織與呈現您的資料。
在iPhone作業系統中的事件驅動模型(event-handling model),和傳統的桌面型應用軟體來比較,也代表著一個相當重要而有意義的開始。取代一般完全依靠滑鼠與鍵盤的方式,iPhone 作業系統展示了一個觸控的全新概念。一個觸控的訊息在任何時間都能發生並且還能結合其他單一或多個額外的觸控事件。這些觸控的訊息能偵測到使用者與您內容所做的簡單互動動作,如選取或拖拉;或是複雜的手勢或互動如敲擊(swipes)、或捏放(pinch-open)及捏擠(pinch-close)等手勢動作(舉例來說,就像在Photo照片程式裡對照片所做的放大、縮小等動作)。
在思考您應用程式的基本架構之前,您必須先想到您的使用者將如何使用您的程式,iPhone的軟體應該是簡潔並專注在使用者當下的需要。請記住,對想要隨時能以最快的方式來取得資訊的使用者來說,她們並不想浪費太多時間在您程式的各個畫面中尋找功能或答案。用最簡單的方式來強調使用者最需要的主要資訊是相當重要的。而對遊戲或其他趣味性的程式來說,您必須想到您的使用者將如何的與您的程式互動,並在適當的地方藉由iPhone內建的加速計及攝影機等技術來產生樂趣。
而當您準備開始進行程式開發的時候,您必須先了解的是Foundation及UIKit這兩組framework。這些frameworks提供了所有iPhone程式所需要的主要服務與功能,而您也必須研究系統中其他的frameworks以了解這些frameworks 還能提供哪些其他的服務。這些framework中的文件都包含了連結及相關必要的資訊來幫助您學習如何進階的使用這些frameworks。
要取得關於Foundation 及UIKit frameworks 的資訊,請見
Foundation Framework Reference及
UIKit Framework Reference.
從什麼地方開始
利用Xocde內建提供的預設專案範本來建立功能單純的應用程式是相對比較簡單的,但若是要寫一支真正有用而且界面又漂亮的軟體或程式,那您勢必得花一些時間來閱讀這些可輕易取得的線上文件及手冊。
至少,您必須花一點點時間來閱讀在iPhone Dev Center中關於tools工具及建立程式的相關文章。
如果您對iPhone是Mac OS X作業系統一點也不熟悉,那您得花點時間去了解這些與iPhone作業系統相關的基本設計方法及規定,這對撰寫iPhone平台的程式是相當重要的。在iPhone的作業系統中,若能善用這些frameworks所提供的超強功能,您就能讓程式跑的有效率而且最佳化。但如果您花時間只學這些基本frameworks的功能則您會發現建立您的應用程式是比只學習這些基本且使用中的設計方法還要來的困難。每一個iPhone的開發者都必須要知道的基本資訊就是
Cocoa Fundamentals Guide。這一份文件涵蓋了Objective-C語言的基礎、程式設計的規則及設計的方法,而這都常被使用在UIKit及其他系統的frameworks。
一但您了解了這些基本的規則並開始建立你的iPhone程式之後,您可以開始參考
iPhone OS Programming Guide 讓您在開發過程中取得特定的功能細節。這本書提供了開發iPhone程式的主要概念及以任務為基礎的資訊,包括了如何顯示使用者介面,控制系統訊息及事件等範例程式,並能夠確實掌握住iPhone作業系統的特色與能力。同時,這本書還描述了整個開發過程並對如何使用Xcode來進行程式的開發有相當詳細的介紹。
而除了
iPhone OS Programming Guide這本書之外,您還需要看一下這些已經提供的範例程式,iPhone作業系統搭載了相當數量的全功能範例程式,讓您能夠輕易的了解該如何利用這些可垂手可得的技術來建立一個真正可用的應用程式。您能夠利用這些範例來當作您程式開始的起點,或您可以藉由這些範例的原始程式碼來學到如何使用特定的功能或特徵。