iPhone開發須知說明
iPhone開發須知說明是本文要介紹的內容,主要是來認識iPhone 開發需要知道的內容,也是我們所說的常識,先來看內容。iOS運行環境的設計目標,快速安全的執行應用程序。
快速啟動,短暫使用。一個典型情況是,用戶從口袋中拿出設備,只使用幾秒鐘或者幾分鐘,然后再次放在口袋里。 這要求:
快速啟動應用。
使用后能盡快退出。
特殊的系統行為。
在很多地方,iOS都和mac os x特性和行為一樣。但是有些情況和mac os x不同:
虛擬內存系統
管理程序內存,iOS和mac os x擁有相同的特性和行為方式。在iOS下,每個程序仍然擁有自己的虛擬地址空間,但是和mac os x不同的是,它使用虛擬內存受到可用物理內存數量的限制。這是因為iOS不能在內存滿了以后把可換出的內存分頁寫入磁盤。作為替代,當應用程序需要騰出更大內存的時候,虛擬內存系統將釋放這些可換出內存。這會刪除內存中不再使用的部分,也包括只讀內容,比如代碼頁。這些頁面能夠經常被重新加載到內存中,當再次需要它們的時候。
如果內存繼續受到限制,系統可能向正在運行的應用發送通知,要求它釋放額外的內存。應用程序應該響應這個通知,并且釋放內存。
自動休眠定時器
自動休眠定時器,是一個iOS試圖節約電量的做法。當有一段時間沒有收到觸摸事件,系統將初始化屏幕并最終關閉屏幕。
雖然大部分情況下這種定時處理是好的,但對于游戲開發者,或者其他不通過觸摸的應用開發者來說,需要保持屏幕可用,這需要對UIApplication的idleTimerDisabled設置為YES。
這樣的設置會帶來大量的用電消耗。在開發中要考慮禁用自動休眠定時器的必要性。
多任務支持
在iOS4和后續版本,可以實現后臺執行任務。當用戶退出一個應用,進程并不中止,而是被轉入后臺。在轉入后臺后很短的時間內,大部分應用將被系統掛起,因此不會運行,也就不會需要附加的電量。另外,需要繼續運行的應用可向系統請求執行時間用于運行。
無論是掛起的還是繼續運行的后臺應用,它們都依然在內存中,這讓它們重新啟動應用花費更少的時間。不過,如果內存使用緊張,系統可以釋放后臺應用的內存,供其他應用使用。因此后臺應用應在轉入后臺時持久保存當前狀態,以便在下次重啟應用的時候恢復狀態。
安全
iOS的一個重要任務是確保用戶在設備上安全運行應用。iOS通過一些特性來保證這些需求。
應用沙箱
因為安全的原因,iOS限制一個應用只能訪問文件系統的唯一位置,包括限制對數據和應用首選項(preference)。這就是沙箱特性。沙箱是一組細粒度的控制限制集合,包括對文件、首選項、網絡資源、硬件等等的訪問。
文件保護
在iOS及以后版本,應用可以使用文件保護來加密文件,確保當用戶設備鎖定時文件不可訪問。
keychain data
Keychain Data是一個容器,用于加密和安全的處理密碼和其他保密的信息。keychain data是存儲于應用沙箱之外的。如果一個應用刪除了,那么keychain data也將自動刪除。當用戶通過iTunes備份應用數據的時候,keychain data也會備份。然而,該數據只能恢復到備份它的設備上。對應用的升級不會影響keychain data。
文件系統
一些重要的應用目錄,為了安全的緣故,一個應用只能擁有一些目錄,用來寫入應用的數據或者首選項參數。當一個應用安裝到系統,會創建該應用的home目錄。以下列出一些home目錄下的主要的子目錄:
< Application_Home>/AppName.app:存放應用程序自身
< Application_Home>/Documents/:存放用戶文檔和應用數據文件
< Application_Home>/Library/:應用程序規范的頂級目錄,下面有一些規范定義的的子目錄,當然也可以自定義子目錄,用于存放應用的文件,但是不宜存放用戶數據文件
< Application_Home>/Library/Preferences,這里存放程序規范要求的首選項文件
< Application_Home>/Library/Caches,保存應用的持久化數據,用于應用升級或者應用關閉后的數據保存
< Application_Home>/tmp/,保存應用數據,但不需要持久化的,在應用關閉后,該目錄下的數據將刪除
大小寫敏感文件系統
iOS文件系統對大小寫敏感的。
通過用戶桌面電腦共享文件
文件共享可以在應用和用戶桌面電腦之間共享文件。但是不允許同一個設備中的不通應用之間共享文件。如果要在應用之間共享數據,需要使用剪切板或者文檔交互控制器對象(document interaction controller object)。
備份和恢復
iTunes應用可在適當情況下自動處理備份和恢復。然后,應用需要知道備份和恢復的文件放在哪里。
什么是備份
你不必為你的應用備份和恢復做任何準備。在iOS
以后,當設備連接到電腦并開始同步后,iTunes會自動增量備份所有文件,但不包括下面的目錄:
- Application_Home>/AppName.app
- Application_Home>/Library/Caches
- Application_Home>/tmp
雖然iTunes備份應用自身,但不是每次同步都這樣做。從app store上購買的應用,只在隨后的同步過程中被iTunes備份。再之后,iTunes并不在同步操作中備份應用,除非應用自身發生變化,比如應用的升級。
為了避免同步過程時間過長,你需要對應用中使用的文件放在哪里做出選擇。< Application_Home>/Documents目錄用來存放用戶文檔和應用數據文件。臨時文件要保存在Application Home/tmp目錄下,這樣可以在不需要時刪除。如果在兩次啟動中都需要的數據文件,但是不需要備份的,可放置在Application Home/Library/Caches。比如很大的數據文件,盡量放置在Caches目錄下,而不是Documents目錄下,Documents目錄下文件將做備份,這樣會很耗時。
應用更新期間的文件保存
如果文件需要在應用更新后依然存在,需要放置在:
- Application_Home>/Documents
- Application_Home>/Library
模擬器
模擬器提供了一個運行環境,和真機的環境很接近,但是并不完全一樣:
模擬器沒有真機上的一些限制,比如內存(真機沒有內存分頁保存到硬盤的特性)
有些技術的行為并不一樣,比如OpenGL ES
判斷可用的硬件支持
有一些硬件特性,不是所有iOS設備都帶的,比如GPS或者照相機。如果你的應用需要這樣的特性,需要在用戶購買前提醒。如果你使用這樣的硬件特性是可選的,那么需要在使用前檢查硬件特性是否可用。
如果應用必須使用硬件特性,那么在Info.plist文件中的UIRequiredDeviceCapabilities條目中做設置。這也可以防止沒有該硬件特性的用戶安裝應用到設備上。
可通過iOS判斷如下硬件特性的支持情況:
多任務支持
屏幕是iPad還是iPhone尺寸
是否有額外的屏幕加入
硬件磁盤加密特性是否可用
網絡是否可用
設備是否可捕獲視頻
語音輸入(麥克風)是否可用
GPS設備當前是否可用
指定的硬件訪問是否可用
當前的電池水平
proximity傳感器是否可用(是哪個面部靠近識別傳感器吧?)
小結:iPhone開發須知說明的內容介紹完了,通過本文文章介紹iPhone的開發,是不是多多少少明白了點,最后希望本文對你有所幫助!