避開iOS 5開發(fā)中的陷阱 選好移動(dòng)開發(fā)的技術(shù)路線
愛圖騰科技高級(jí)架構(gòu)師廉潔 首先一定要關(guān)注***資訊。多去Apple官方網(wǎng)站,像iOS 5的升級(jí),在官網(wǎng)提前很久就已經(jīng)放出來對(duì)應(yīng)的文檔、新特性說明等。同時(shí)還有很多視頻資源,會(huì)演示新特性對(duì)開發(fā)或者設(shè)計(jì)造成那些影響。還有各種iOS開發(fā)相關(guān)的論壇,例如CocoaChina,CSDN社區(qū)等。 接下來就是對(duì)平臺(tái)的動(dòng)作采取快速反映,***時(shí)間提供一個(gè)版本的更新,這個(gè)非常重要,能給用戶非常好的體驗(yàn)。但是要記住一點(diǎn):一定要保證穩(wěn)定性。做iOS應(yīng)用就要有Apple的風(fēng)范,快速反映不代表為了快而趕工,應(yīng)用的穩(wěn)定性是用戶體驗(yàn)的前提。所以不要急著使用新特性,開發(fā)人員很容易陷入新特性帶來的亢奮中,但是實(shí)際上從整個(gè)產(chǎn)品的運(yùn)營來看,本著穩(wěn)定壓倒一切的原則,一定要慎重! ***是覆蓋測(cè)試。測(cè)試是最有效的手段,能夠發(fā)現(xiàn)很多問題。全功能的覆蓋測(cè)試,需要在上線之前就能夠去維護(hù)一套完整的測(cè)試方案。這樣每次就照著這個(gè)方案走一遍,就會(huì)很方便的發(fā)現(xiàn)問題。另外一點(diǎn),要覆蓋全部的設(shè)備和全部的兼容系統(tǒng)。雖然理論上不同設(shè)備之間只要系統(tǒng)的版本一樣,應(yīng)該沒有問題,但是實(shí)際總是和理論有所出入的。 每次系統(tǒng)升級(jí)后,Apple會(huì)列出所有他認(rèn)為重要的東西,開發(fā)者可以比照著然后一條一條的查漏補(bǔ)缺。同時(shí)也應(yīng)該關(guān)注一些其他網(wǎng)站、論壇上,很可能會(huì)得到啟發(fā)和預(yù)警。之前說的其實(shí)是一個(gè)比較通用的一個(gè)大的方面的一個(gè)概括。 iOS新特性介紹 iCloud Storage對(duì)于開發(fā)者的意義:所有iOS設(shè)備上的文件都能夠通過Apple提供的iCloud Storage上傳。iCloud Storage上線之后,對(duì)本地存儲(chǔ)會(huì)有一些強(qiáng)制性的要求。什么樣的數(shù)據(jù)可以上傳?首先是用戶生成的數(shù)據(jù),或者是不可被重新生成的可以上傳,剩下的部分要放到Cache里。按照Apple的Guideline的說法,這類數(shù)據(jù)是自動(dòng)的會(huì)被備份iCloud Storage上,就要求開發(fā)者盡量的為用戶節(jié)省空間和流量。
慎用ARC,一把雙刃劍:ARC是將之前手動(dòng)Release的東西在編譯期間自動(dòng)化,和手動(dòng)編譯是一樣的。據(jù)Apple的宣傳來講,ARC在Release、Return管理的效率上,有很大性能的提升。ARC極大的降低了iOS開發(fā)門檻,卻也帶來了一些負(fù)面效果。它和Java的垃圾回收機(jī)制不同,是攢到一定的程度再去釋放。由此必然導(dǎo)致一些垃圾回收不及時(shí),或者在釋放的時(shí)候?qū)π阅茉斐捎绊憽?/p>
廉潔認(rèn)為目前上線的大部分應(yīng)用內(nèi)存管理比較完善,因此不會(huì)對(duì)產(chǎn)品有明顯影響。ARC對(duì)從C或者C++過來的東西識(shí)別上有一些困難,他對(duì)這些的應(yīng)用有一些特殊的聲明。如果應(yīng)用里用了很多第三方的類庫全部轉(zhuǎn)成ARC,是需要一些勇氣的。轉(zhuǎn)完之后可能大家心里都沒底,會(huì)不會(huì)造成什么問題,還需要詳細(xì)、全面的測(cè)試。所以新員工謹(jǐn)慎用,維護(hù)期的線上的應(yīng)用盡量用,新應(yīng)用倒是可以用 Newsstand介紹:Newsstand只是給新聞?lì)惖膽?yīng)用提供了一個(gè)聚集的場(chǎng)所。它的好處包括:可以提供個(gè)性化的封面,每期一個(gè)封面,大小可以自己設(shè)定。Apple提供了幾種標(biāo)準(zhǔn),包括雜志的樣式或者新聞的樣式。另外雜志類的應(yīng)用經(jīng)常要求大量的數(shù)據(jù)的下載,Newsstand提供了在后臺(tái)下載和推送機(jī)制,避免用戶在打開應(yīng)用之后,應(yīng)用開始下載雜志內(nèi)容,導(dǎo)致可能出現(xiàn)的人身傷害事故。 一些其他的新特性:Storyboards對(duì)開發(fā)者來講很有吸引力,同樣對(duì)已經(jīng)在線上的應(yīng)用慎用。而對(duì)Coreimage來說,Apple提供了大量的圖象處理的API,真正做起來,門檻有點(diǎn)高,好多圖象的算法學(xué)識(shí)很難。像Location Simulation目的在于解決開發(fā)者在開發(fā)基于地理位置應(yīng)用時(shí)候?qū)嵉販y(cè)試的困難。但是其實(shí)不是特別的靈活,僅能夠一定程度上提供這種模擬。Instumnets,提供了大量性能分析工具。OpenGL ES為測(cè)試和debug都提供了更好的環(huán)境。 iOS升級(jí)的各種問題以及解決之道 iOS 4中Category這個(gè)方式非常流行,而在iOS 5中就不用了。UINavigationBar實(shí)際上提供了一個(gè)更好的修改背景的方法。為了iOS 4和iOS 5的兼容,首先保留Category,這個(gè)在iOS 4里面沒有問題;如果在iOS 5上出現(xiàn)問題,可以去提供系統(tǒng)修改的背景的方。第二個(gè)可能比較重要的一個(gè)變化。
還有一個(gè)就是比較頭疼的玩意兒了。在iOS 5的鍵盤高度不是固定的,例如微博類的應(yīng)用,輸入法會(huì)直接把輸入框蓋住。Apple還提供了幾個(gè)事件,***通過去注冊(cè)一些事件,在他的Userinfo里面會(huì)直接看到。包括取一個(gè)Frame或者什么東西,取到的東西是一個(gè)velue的一個(gè)值,他不是一個(gè)值,他會(huì)封裝成ISVELUE?;旧贤ㄟ^這幾個(gè),就能夠處理現(xiàn)有的這些鍵盤上的一些變化。 iOS 5中建議放棄UDID,以后可能會(huì)被取消掉。Apple提供了一些替代的方法,比如可以創(chuàng)建自己的UDID,之后可以存到這個(gè)NEWUSERDEFAULT里面。這樣做雖然不是一個(gè)唯一的UDID,但基本上不影響統(tǒng)計(jì)分析使用的。 在ReleaseNote里面寫的很清楚,隱藏一個(gè)header現(xiàn)在直接返回沒有用。UIPICKERVIEW,就是在***次選擇的時(shí)候,會(huì)調(diào)用一些程序里面主動(dòng)設(shè)計(jì)他選擇的一個(gè)方法。現(xiàn)在iOS 5中不會(huì)觸發(fā),需要大家做一些針對(duì)性的處理。在iOS 5里面大家需要主動(dòng)的設(shè)計(jì)papovercontroller。 移動(dòng)開發(fā)中的技術(shù)路線選擇 上帝給了我們選擇的權(quán)力,我們卻用它來糾結(jié)。短短幾年時(shí)間內(nèi),移動(dòng)讓整個(gè)IT圈改革了。以前PC上WIntel一統(tǒng)江湖的局面,在移動(dòng)領(lǐng)域顯得那么格格不入。仿佛大航海時(shí)代的開始,很多人夢(mèng)想著沖向偉大航路搜索傳說中的One Piece,如此多的選擇,究竟要搭上哪一艘船?身為***下水的成員之一,上海改變科技CTO李亮就他自身經(jīng)歷,對(duì)整個(gè)移動(dòng)行業(yè)進(jìn)行了分析,并從整體出發(fā)分享了開發(fā)過程中需要注意到的事項(xiàng)。 上海改變科技CTO李亮 李亮認(rèn)為,現(xiàn)在的時(shí)代可以稱之為一個(gè)新的移動(dòng)時(shí)代,是移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)從剛開始成長到成熟的階段,目前應(yīng)該說邁入了成熟的階段。。涌現(xiàn)出了很多廠商,廠商又出現(xiàn)了非常多的設(shè)備。Apple很簡(jiǎn)單,一個(gè)iPhone,一個(gè)iPad。而在Android的世界里,就有無數(shù)不同的廠商,產(chǎn)生出了不同尺寸的,甚至性能有高有第的設(shè)備。這是非常多樣性的情況,系統(tǒng)也是一樣。雖然我們今天經(jīng)過一段時(shí)間的發(fā)展,可以說我們現(xiàn)在這個(gè)時(shí)間段已經(jīng)是移動(dòng)互聯(lián)網(wǎng)這個(gè)產(chǎn)業(yè)從剛開始成長到成熟的階段。***數(shù)據(jù)顯示,Android的份額達(dá)到58.67%,iPhone14%多,BlackBerry 9.2%,bada是三星的占3.33%。 對(duì)于一個(gè)平臺(tái),開發(fā)者看中他能夠提供什么樣的能力?首先是盈利問題,其次是用戶量、生態(tài)環(huán)境包,***是應(yīng)用開發(fā)的方便性。Apple的產(chǎn)品一致性是***的,整個(gè)系統(tǒng)的坐標(biāo)體系不是整數(shù),是浮點(diǎn)數(shù)。所以他可以維持整個(gè)設(shè)備的屏幕坐標(biāo)的大小是一樣的,同時(shí)iOS的模擬器也做的很棒,這些對(duì)開發(fā)者來說非常有利。而Android一來是開源的,二來有Google撐腰。Android的開放性,引來了非常大的廠商,三星、摩托羅拉等,然后包括一些別的二線廠商,甚至現(xiàn)在又非常非常多的山寨廠商也開始專項(xiàng)Android的系統(tǒng)。大量的廠商生產(chǎn)的大量的設(shè)備,自然而然就造成了不同規(guī)格的設(shè)備,這個(gè)對(duì)開發(fā)者其實(shí)是一個(gè)困擾。
Windows Phone 7***的后臺(tái)就是MicroSoft,不過李亮認(rèn)為WP7不可能超過iOS或者Android的份額。況且Windows Phone 7作為一個(gè)開發(fā)平臺(tái),就目前來說,再開發(fā)接口上面還是缺一點(diǎn)東西。最近RIM有一個(gè)比較大的動(dòng)作,目前主推的QNX是一個(gè)全功能的實(shí)時(shí)Unix系統(tǒng)。三星自家的bada,有三星的強(qiáng)大銷售鏈,只要三星愿意做是不會(huì)死掉的。webOS的用戶體驗(yàn)堪比iOS,但是現(xiàn)在前途未卜。 開發(fā)者對(duì)操作系統(tǒng)的考量主要集中在這幾個(gè)方面:操作系統(tǒng)的能力(計(jì)算能力)、有沒有多任務(wù)、是不是能夠后臺(tái)運(yùn)行、操作系統(tǒng)的限制等、分辨率和鍵盤、云服務(wù)、平臺(tái)本身的市場(chǎng)比例、支付方式等。技術(shù)方面需要注意的有代碼重用、是否需要跨平臺(tái)。 李亮認(rèn)為,任何東西無論多先進(jìn)多好,一統(tǒng)江湖的可能性是沒有可能的??缙脚_(tái)思潮有著悠久的歷史,但是到***,都沒有成為主流。而用戶體驗(yàn)這個(gè)東西,不能夠喧賓奪主,開發(fā)者要想明白一個(gè)道理,我們的目的就是讓用戶更方便的使用這個(gè)程序,而不是說為了用戶體驗(yàn)而用戶體驗(yàn)。***說到測(cè)試,需要對(duì)于不同的機(jī)器,在不同的網(wǎng)絡(luò)環(huán)境下,不同的運(yùn)營環(huán)境下做測(cè)試。還有一些就是在極端情況下測(cè)試也必須做得到。
作為開發(fā)者,你不應(yīng)該錯(cuò)過! 移動(dòng)開發(fā)者俱樂部(CMDN Club)是全球***中文IT社區(qū)CSDN專門為移動(dòng)開發(fā)者打造的實(shí)名邀請(qǐng)制網(wǎng)絡(luò)平臺(tái),是移動(dòng)開發(fā)者線上交流和線下活動(dòng)的專屬社區(qū)。