如何避開iOS 5開發中的陷阱
首先一定要關注***資訊。多去Apple官方網站,像iOS 5的升級,在官網提前很久就已經放出來對應的文檔、新特性說明等。同時還有很多視頻資源,會演示新特性對開發或者設計造成那些影響。還有各種iOS開發相關的論壇,例如CocoaChina,CSDN社區等。
接下來就是對平臺的動作采取快速反映,***時間提供一個版本的更新,這個非常重要,能給用戶非常好的體驗。但是要記住一點:一定要保證穩定性。做iOS應用就要有Apple的風范,快速反映不代表為了快而趕工,應用的穩定性是用戶體驗的前提。所以不要急著使用新特性,開發人員很容易陷入新特性帶來的亢奮中,但是實際上從整個產品的運營來看,本著穩定壓倒一切的原則,一定要慎重!
***是覆蓋測試。測試是最有效的手段,能夠發現很多問題。全功能的覆蓋測試,需要在上線之前就能夠去維護一套完整的測試方案。這樣每次就照著這個方案走一遍,就會很方便的發現問題。另外一點,要覆蓋全部的設備和全部的兼容系統。雖然理論上不同設備之間只要系統的版本一樣,應該沒有問題,但是實際總是和理論有所出入的。
每次系統升級后,Apple會列出所有他認為重要的東西,開發者可以比照著然后一條一條的查漏補缺。同時也應該關注一些其他網站、論壇上,很可能會得到啟發和預警。之前說的其實是一個比較通用的一個大的方面的一個概括。
iOS新特性介紹
iCloud Storage對于開發者的意義:所有iOS設備上的文件都能夠通過Apple提供的iCloud Storage上傳。iCloud Storage上線之后,對本地存儲會有一些強制性的要求。什么樣的數據可以上傳?首先是用戶生成的數據,或者是不可被重新生成的可以上傳,剩下的部分要放到Cache里。按照Apple的Guideline的說法,這類數據是自動的會被備份iCloud Storage上,就要求開發者盡量的為用戶節省空間和流量。
慎用ARC,一把雙刃劍:ARC是將之前手動Release的東西在編譯期間自動化,和手動編譯是一樣的。據Apple的宣傳來講,ARC在Release、Return管理的效率上,有很大性能的提升。ARC極大的降低了iOS開發門檻,卻也帶來了一些負面效果。它和Java的垃圾回收機制不同,是攢到一定的程度再去釋放。由此必然導致一些垃圾回收不及時,或者在釋放的時候對性能造成影響。
廉潔認為目前上線的大部分應用內存管理比較完善,因此不會對產品有明顯影響。ARC對從C或者C++過來的東西識別上有一些困難,他對這些的應用有一些特殊的聲明。如果應用里用了很多第三方的類庫全部轉成ARC,是需要一些勇氣的。轉完之后可能大家心里都沒底,會不會造成什么問題,還需要詳細、全面的測試。所以新員工謹慎用,維護期的線上的應用盡量用,新應用倒是可以用
Newsstand介紹:Newsstand只是給新聞類的應用提供了一個聚集的場所。它的好處包括:可以提供個性化的封面,每期一個封面,大小可以自己設定。Apple提供了幾種標準,包括雜志的樣式或者新聞的樣式。另外雜志類的應用經常要求大量的數據的下載,Newsstand提供了在后臺下載和推送機制,避免用戶在打開應用之后,應用開始下載雜志內容,導致可能出現的人身傷害事故。
一些其他的新特性:Storyboards對開發者來講很有吸引力,同樣對已經在線上的應用慎用。而對Coreimage來說,Apple提供了大量的圖象處理的API,真正做起來,門檻有點高,好多圖象的算法學識很難。像Location Simulation目的在于解決開發者在開發基于地理位置應用時候實地測試的困難。但是其實不是特別的靈活,僅能夠一定程度上提供這種模擬。Instumnets,提供了大量性能分析工具。OpenGL ES為測試和debug都提供了更好的環境。
iOS升級的各種問題以及解決之道
iOS 4中Category這個方式非常流行,而在iOS 5中就不用了。UINavigationBar實際上提供了一個更好的修改背景的方法。為了iOS 4和iOS 5的兼容,首先保留Category,這個在iOS 4里面沒有問題;如果在iOS 5上出現問題,可以去提供系統修改的背景的方。第二個可能比較重要的一個變化。
還有一個就是比較頭疼的玩意兒了。在iOS 5的鍵盤高度不是固定的,例如微博類的應用,輸入法會直接把輸入框蓋住。Apple還提供了幾個事件,***通過去注冊一些事件,在他的Userinfo里面會直接看到。包括取一個Frame或者什么東西,取到的東西是一個velue的一個值,他不是一個值,他會封裝成ISVELUE。基本上通過這幾個,就能夠處理現有的這些鍵盤上的一些變化。
iOS 5中建議放棄UDID,以后可能會被取消掉。Apple提供了一些替代的方法,比如可以創建自己的UDID,之后可以存到這個NEWUSERDEFAULT里面。這樣做雖然不是一個唯一的UDID,但基本上不影響統計分析使用的。
在ReleaseNote里面寫的很清楚,隱藏一個header現在直接返回沒有用。UIPICKERVIEW,就是在***次選擇的時候,會調用一些程序里面主動設計他選擇的一個方法。現在iOS 5中不會觸發,需要大家做一些針對性的處理。在iOS 5里面大家需要主動的設計papovercontroller。
via CMDN Club