一、First launch
第一:quick 速度。初次開機要快,如果不能做到快,那麼需要事先顯示一張loading時的圖片,這樣給使用者的感覺會很好,而不會因為速度慢而讓使用者給刪除掉
第二:不能Crash。應用在啟動的時候發生崩潰有幾個方面,第一長時間沒有響應被系統殺死,第二,需要訪問網路的應用,沒有網路或者網路不好的狀態下有可能崩潰,這時候需要預先載入,或者將網路事件與UI顯示分離開,進行非同步作業。第三,內部檔案,xib檔案,這個檔案會在編譯時間編譯成nib二進位檔案,是一個很大的記憶體檔案,當一個xib上面有很多的view的時候,會造成很大的效能問題,編譯出來的xib檔案是一個很大的檔案,在載入時會非常非常慢。
解決方案:第一:少使用xib檔案,盡量用代碼去寫。第二:把xib檔案分解成N個xib檔案,每個xib檔案包含盡量少的view。第三:使用storyboard,這個StoryBoard已經 經過了最佳化不會造成xib檔案的級數增大,缺點是只支援ios5以上的系統。第四:消極式載入資源,最好在viewDidLoad函數中載入資源。第五:網路下載要使用非同步下載。
二、Workflow。第一:alert 彈出對話方塊。這個會打斷使用者的使用流程,而且給使用者的資訊量小,並且時對使用者造成侵犯。如果非要提示使用者,可以顯示一個浮動視窗,進行提示。這個浮動層不能打斷使用者的行為,只有在非常嚴重的情況下才使用alert dialog。第二:減少使用者的tab。
三、response。反映速度應該快速。
第一,網路資源,(1)sendSynchronousRequest這個方法不建議使用。這是同步的方法,即使線上程中也是。最好使用connectionWithRequest:deleget非同步方法呼叫來取得網路資源;(2)取消不需要的網路訪問,最好建立幾個網路請求隊列,沒有必須的網路需求隊列,這個隊列可以隨時被cancel掉,必須的網路請求隊列需要保持;(3)使用網路cache;(4)增量處理資料,一點一點的取得資料,分別顯示,不一定非要一次性顯示全部資料;(5)線程不宜開的太多,線程太多會造成網路很慢,尤其是圖片或者頭像獲得。
第二,圖片的loading,一般jpeg的格式圖片會比png的圖片loading的慢。
jpge的壓縮和解壓的時間不穩定,這導致你在處理時無法控制時間。png是無損壓縮格式,所以圖片往往會很大,這時候需要進行最佳化,在xcode中包括了這個工具,命令是pngcrash -iphone -f 0 orig.png optimized.png。網路請求的圖片一般是沒辦法經過這種方式來最佳化,那麼我們可以通過一些code來進行最佳化,例如最佳化圖片的阿爾法值等;通過cache畫好的圖案來最佳化效果。
第三, table views,其中的cells裡載入時,在滑動時會造成很卡的情況。
最佳化每個view的渲染過程,來節省你的cell的載入過程。customCell不好用,使用drawrect方法來代替吧。其中有很多技巧,可以查閱文檔。不要和api作對,利用instrument來尋找瓶jin。
四、Details細節
第一:Appearance 外觀要好看,有些UI可以使用Hack的方法來改變系統的UI,IOS5出現了可以修改UI的外觀的方法,不過只支援IOS5。
第二:Animation,好的動畫效果會給使用者心曠神怡的感覺。
第三:Status bar,這個bar可以隱藏,不過一旦隱藏起來後使用者看不到電量和時間會很難受。
第四:state saving,當使用者接完電話回來後,還想繼續玩你的應用,但是如果你不儲存你的應用的目前狀態,會給使用者的心理造成很大的傷害。