使用者登入

全站搜尋

最新回應

論壇最新主題

論壇最新回覆

會員排行榜

線上使用者

目前共有 0 位註冊使用者1 位訪客 在線上。

建立第一支 iPhone程式(一) - 未完

babyfish0226
babyfish0226 的照片

原始來源:Creating an iPhone Application
(需先登入apple會員)

建立第一隻iPhone的應用程式(一)

在 一個高階開發的階段,建立一個iPhone應用程式的過程是和寫Max OS X的軟體是差不多的,因為兩者都是使用相同的工具及許多的基本函式庫(Libraries)。不過儘管這兩個非常的相似但還是有一些重要地方是不相同的。 首先,iPhone不是一台桌上型的個人電腦,他被設計來作特定用途的使用所以必須用比較不一樣的方式來達成。而這個目標也許必須利用iPhone作業系 統來達到一個看似先進但卻無關緊要或不切實際的特色來應用在一個行動的環境。而iPhone及iPod Touch的小螢幕也代表著您應用程式的使用者界面必須有效的組織並強調在使用者最需要的資訊上面。

iPhone作業系統使用了許多桌上 型應用程式所無法達到的方式來讓使用者與iPhone及iPod Touch來進行互動。多點觸控介面是一個接收系統事件的全新革命性方式,當每一根手指頭接觸到螢幕時都將進行回報並讓多點觸控的手勢及其他複雜輸入的掌 控能更加的簡單。除此之外,內建的硬體特徵如加速度計,雖然在部份桌上型系統也看的到,但在iPhone的作業系統中卻被更廣泛的應用在追蹤螢幕目前的位 置並用來即時調整您相對應的內容。了解如何在您的程式中去應用這些特色將能有效的幫助您做出最佳化的設計。

了解iPhone設計程式的最佳方式就是從閱讀一個範例開始。這一篇文章將用一個名為 MoveMe 的範例程式來引導您認識該如何來設計一支iPhone的應用程式,而這個範例將展示許多iPhone程式中相當型的一些行為與動作,包括了;

  • 程式初始化
  • 顯示一個視窗
  • 繪出自定的內容
  • 管理觸控的事件
  • 展示一個動畫效果


圖 1
MoveMe 程式視窗

圖1 展示了這支程式的介面。觸碰這個Welcome的按鈕將觸發一個動畫,而這動畫將會以您手指頭觸碰位置為中心並以振動的方式進行置中。當您在螢幕上移動您 的手指頭時(按住不放),這個按鈕也將跟著您手指頭的位置來進行移動,但當您把手指頭由螢幕上移開的時候(放開),此時將會使用另一組動畫來讓這個按鈕快 速地回到他本來的位置。而在按鈕以外的地方用手指頭雙擊螢幕,此時將會用不同的語言來切換按鈕上的歡迎訊息。

在繼續閱讀其他的章節之前,您必須先下載MoveMe的範例程式好讓您能跟著其中的原始程式碼來直接進行學習,此外,您也必須先閱讀完下面幾篇在iPhoneDev Center的文章以建立iPhone作業系統、開發工具及程式語言等基本的概念;

如果您對 Objective-C 程式語言仍不太熟悉,您還必須先閱讀 Objective-C 初級教學 來熟悉 Objective-C 的基本語法。

MoveMe範例專案研究

下載MoveMe的 範例將提供您建立及執行程式的所有原始碼及相關的支援檔案。您必須使用Xcode這套應用程式來管理您的iPhone專案(Xcode預設安裝位置在 /Developer/Applicationsby)。而每一個Xcode的專案視窗都包含了一個集合了程式碼及資源檔的工作區域(workspace )、建立一個編譯資源及轉譯程式的規則以及對您的程式碼能夠進行編輯與除錯的工具等。

圖2示範了MoveMe這套程式在Xcode專案視 窗中的顯示情形。為了開啟這個專案,請先複製MoveMe到您的本地硬碟並雙擊MoveMe.xcodeproj這支檔案(您也可以由Xcode中選擇 File>Open來開啟)。這組專案包括了多個Objective-C的來源檔案(附檔名為.m的檔案)、一些影像檔案以及其他的資源,另外還有 一個建立程式所預先定義的目標等(MoveMe) 。

圖 2 MoveMe專案視窗


在iPhone 的作業系統中,您的Xcode專案的最終目標就是完成一組 application bundle,而所謂的bundle就是一種將您程式的二進位可執行檔及資源檔案集中為一個具有階層的資料夾型態。Bundles在iPhone的作業系 統中有一個關連式的扁平資料夾架構,同時將大多數的檔案都會放置在Bundle資料夾的第一層。然而,一個bundle也可能包含了多個子資料夾以用來儲 存字串及其它特定語言資料檔的本地端版本。這篇文章的目的並不需要您去了解application bundle的正確架構,但如果您有興趣的話也可以參考在 iPhone OS Programming Guide 文章中的 "The Application Bundle" 章節裡找到更多的資訊。

建立 MoveMe 程式

請跟著下列的動作來建立 MoveMe 程式並在模擬器上執行:

  1. 在 Xcode 中打開 MoveMe.xcodeproj 檔案。
  2. 在專案的工具列,在Active SDK的選單中請確定simulator(模擬器)的選項是打勾的。
  3. 從這個選單中選擇 Build > Build and Go (Run) 或是在工具列中點 Build and Go 按鈕。

當 程式完成build(建立)的的時候,Xcode將讀取程式至iPhone的模擬器並直接啟動它。現在使用您的滑鼠點擊畫面上寫著Welcome的按鈕, 然後在螢幕上隨意拖曳並看看程式的反應。如果您有一個發展中的裝置設定,您也能夠建立您的程式並測試您裝置的執行狀況。如果您想取得關於裝置在開發上的讀 取與配置的更多相關資訊,請見 iPhone OS Programming Guide 文章中"Development Environment" 章節。

關於記憶體管理
iPhone 主要是一個物件導向式的作業系統,因此大部分的記憶體配置都將以 Objective-C 物件的格式來表現。在iPhone作業系統中的物件使用一種參考計數(reference-counting)的設計來取得被物件使用的記憶體在何時可以 被安全的釋放。當您建立第一個物件時,參考計數將由1開始,而當客戶端接收此物件時則可以選擇是否保留並將參考計數加1。而當客戶端程式選擇保留物件時, 則當此物件不再被需要的時候就必須釋放這個物件,而釋放一個物件時則必須將參考計數減1。當一個物件的參考計數等於0的時候則系統將自動為此物件改變他的 記憶體配置。

注意事項:
iPhone作業系統並不支援在Mac OS X v10.5及以後版本中所使用的Garbage collection 的記憶體管理功能。

如果您想配置一個未與任何物件進行關聯的一般記憶區塊,您可以藉由呼叫標準的malloc library函式庫,當您使用malloc所做的任何記憶體配置,當您完成該物件的工作時您還必須負責使用 free 功能函式的方式來釋放記憶體。系統將不會為您釋放這malloc-based的記憶區塊。

無 論您將如何配置及使用您的記憶體,在iPhone作業系統中管理您全部記憶體的使用將遠比在Mac OS X上還來的重要。雖然iPhone在作業系統中同樣使用了虛擬記憶體系統,但他並非使用記憶體暫存檔(swap file)的方式。 也就是說,若有需要的話,您的Code Page可以超過但您必須將您應用程式的資料在同一個時間一次放到記憶體中。系統將監控剩餘可用記憶體的全部數量,並且決定該為您的應用程式給與多少所需 的記憶體。如果記憶體的使用率仍然過高甚至接近臨界點,則系統將可能直接中斷並結束您的應用程式。不過,這方法只會在最後不得不的情況之下使用,以用來確 保能有足夠的記憶體來維持您的重要操作如接聽電話等功能。

關於在iPhone作業系統中配置物件的更多資訊,請見 Cocoa Fundamentals Guide 。而想要取得更多關於如何為您的應用程式做記憶體最佳化的資訊與小技巧,請參考  iPhone OS Programming Guide"Managing Your Memory Usage" 的章節。 

續..此小節翻譯未完成