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