一、必要條件
1、一台運行Snow Leopard(os x 10.6.5或者更高版本)的基於Intel的Macintosh電腦。
2、註冊成為iOS開發人員,下載iOS SDK。
3、下載XCode整合式開發環境。
二、開發人員選擇:
1、免費的SDK包含一個模擬器,它支援在mac上建立和運行iPhone和iPad程式。但是模擬器不支援依賴硬體的某些特性,如iPhone的加速計或者網路攝影機,也不支援將應用程式安裝到實際的iPhone或其他裝置上。開發的應用也不能發布到appstore上。如果要實現這些功能,需要註冊另外兩個收費的選項。
2、標準方案是99美元一年。提供了大量的開發工具、資源和支援人員,支援在appstore上發布應用。最重要的是支援在iOS上而不是模擬器上調試和測試代碼。
3、企業方案是299美元一年。面向開發專用的、內部的iOS應用程式的企業。
三、編寫iOS程式用何不同:
1、只有一個應用程式正在運行
在iOS上,特定時間段內僅啟用一個應用程式並在螢幕上顯示。從iOS 4開始,當使用者按下home按鈕後應用程式有時可能繼續在後台運行,但是這種情況也只限於特定的場合。
當應用程式未啟用或未運行於後台時,它不會引起CPU任何形式的注意,這將導致網路連接斷開以及其他問題。iOS 4在幕後處理能力方面已經有了大幅提升,但要使你的應用程式在這種情況下仍運行良好,還需要你自身的努力。
2、只有一個視窗
在案頭及膝上型電腦作業系統中,多個程式可以同時運行,並且可以分別建立和控制多個視窗。而iOS則有所不同,它只允許應用程式操作一個“視窗”。應用程式與使用者的所有互動都在這個視窗中完成,而且這個視窗的大小就是iOS螢幕的大小,是固定的。
3、受限訪問
電腦上的程式可以訪問其使用者能夠訪問的任何內容,而iOS則嚴格限制了應用程式的存取權限。
你只能在iOS為應用程式建立的檔案系統中讀寫檔案。此地區稱為應用程式的沙箱,應用程式在其中儲存文檔、喜好設定等需要儲存的各種資料。
應用程式還存在其他方面的限制。舉例來說,你不能訪問iOS上連接埠號碼較小的網路連接埠,也不能執行台式電腦中需要有根使用者或管理員權限才能執行的操作。
4、有限的回應時間
由於使用方式特殊,iOS及其應用程式需要具備較快的回應時間。啟動應用程式時,需要先開啟它,載入喜好設定和資料,並儘快在螢幕上顯示主視圖,這一切要在幾秒之內完成。
只要應用程式在運行,就可以從其下方拖出一個菜單條。如果使用者按home按鈕,iOS就會返回首頁,使用者需要快速儲存一切內容並退出。如果未在5秒之內儲存並放棄控制,則應用程式進程將終止,無論使用者是否已經完成儲存。
請注意,在iOS 4中,這種情況因為一種新API的存在而有所改善。這種API允許你的應用程式在終止前申請多一些的時間來處理。
5、有限的螢幕大小
iPhone的螢幕顯示效果非常出色,從推出到現在,它一直是消費裝置中解析度最高的螢幕。
但是,iPhone的顯示螢幕並不大,你施展的空間要比現代電腦小很多,最新的Retina顯示器(iPhone 4和第4代iPod touch)僅有640×960像素,更老的僅有320×480像素。
而且,現在的尺寸與以前相同,只不過Retina顯示屏為640×960像素,所以不要以為可以放更多的控制項或什麼了——僅僅是解析度比以前高了。
iPad稍大一些,是1024×768像素,但也不算很大。與此形成鮮明對比的是,在撰寫本書時,蘋果公司最便宜的iMac支援1920×1080像素,最便宜的膝上型電腦MacBook支援1280×800像素。而蘋果公司最大的顯示器,27英寸的LED Cinema Display,支援超大的2560×1440像素。
6、有限的系統資源
閱讀本書的任何資深程式員可能都會對256 MB記憶體、8 GB儲存空間的機器嗤之以鼻,因為其資源實在是非常有限,但這種機器卻是真實存在的。或許,開發iOS應用程式與在記憶體為48 KB的機器上編寫複雜的試算表應用程式不屬於同一層級,二者之間沒有可比性,但由於iOS的圖形屬性和它的功能,其記憶體不足是非常容易出現的。
目前上市的iOS的實體記憶體要麼是256 MB,要麼是512 MB,當然今後記憶體還會不斷增長。記憶體的一部分用於螢幕緩衝和其他一些系統進程。通常,不到一半(也可能更少)的記憶體將留給應用程式使用。
雖然這些記憶體對於這樣的小型電腦可能已經足夠了,但談到iOS的記憶體時還有另一個因素需要考慮:現代電腦作業系統,如Mac OS X,會將一部分未使用的記憶體塊寫到磁碟的分頁檔中。這樣,當應用程式請求的記憶體超過電腦實際可用的記憶體時,它仍然可以運行。但是,iOS並不會將易失性記憶體(如應用程式資料)寫到分頁檔中。因此,應用程式可用的記憶體量將受到手機中未使用的實體記憶體量的限制。
Cocoa Touch提供了一種內建機制,可以將記憶體不足的情況通知給應用程式。出現這種情況時,應用程式必須釋放不需要的記憶體,甚至可能被強制退出。
7、不支援垃圾收集
之前已經說過,Cocoa Touch使用的是Objective-C 2.0,但該語言中的一個關鍵特性在iOS中並不可用:Cocoa Touch不支援垃圾收集。
8、新功能
前面提過,Cocoa Touch缺少Cocoa的一些功能,但iOS SDK中也有一些新功能是Cocoa所沒有的,或者至少不是在任何Mac上都可用的。
- iPhone SDK為應用程式提供了一種定位方法,即用Core Location確定手機的當前地理座標。
- 大部分iOS還提供了一個內建的照相機和照片庫,並且SDK允許應用程式訪問這兩者。
- iOS還提供了一個內建的加速計(在最新的iPhone、iPod touch中有陀螺儀),用於檢測機子的握持和移動方式。
9、與眾不同的方法
iOS沒有鍵盤和滑鼠,這意味著在編程時它與使用者的互動方式和通用的電腦截然不同。所幸的是,大多數互動都不需要你來處理。例如,如果在應用程式中添加一個文字欄位,則iOS知道在使用者單擊該欄位時調用鍵盤,你不需要編寫任何額外的代碼。
說明 目前的裝置支援通過藍芽串連外部鍵盤,這提供了一種不錯的鍵盤體驗並節省了一定的螢幕空間,但這種使用情形仍然非常少。串連滑鼠仍然完全行不通。