引言
"一天一點(diǎn)愛戀,一夜一點(diǎn)思念~~",這是梁朝偉的一首歌,講解xib用這個(gè)標(biāo)題,主要是個(gè)人比較喜歡梁朝偉演的電影,而且這首歌也算是經(jīng)典,但最重要原因是很多程序員對xib并沒有"愛戀",這部分一共九篇文章,就是為了幫助廣大程序員對xib產(chǎn)生"愛戀"與"思念"。(文中的xib也包括storyboard,后面專門提高storyboard的地方統(tǒng)一簡寫為SB)
xib優(yōu)缺點(diǎn)分析
以下是我總結(jié)的xib的優(yōu)缺點(diǎn),這個(gè)問題其實(shí)很主觀,沒有絕對,個(gè)人觀點(diǎn),僅供參考。
缺點(diǎn)
1.有一定的學(xué)習(xí)成本
2.沒有代碼表達(dá)清晰
3.出錯(cuò)不易發(fā)現(xiàn),無法調(diào)試,尤其是“連線”出了問題
4.文件易沖突,且難解決,不利于團(tuán)隊(duì)合作,尤其是在團(tuán)隊(duì)中用SB
5.執(zhí)行效率沒有代碼高
6.有時(shí)不利于封裝
優(yōu)點(diǎn)
1.開發(fā)效率高
2.減少大量膠水代碼
3.通過xib可以快速、高效的學(xué)習(xí)控件
4.適配性明顯優(yōu)于代碼(auto layout、size classes)
5.能做的事情比你想象中的要多
優(yōu)缺點(diǎn)的一些個(gè)人看法
個(gè)人認(rèn)為:
有學(xué)習(xí)成本的事情,要看值不值得去做,而xib絕對是值得去做的,因?yàn)閤ib對效率提升幫助相當(dāng)巨大,是大勢所趨,因?yàn)闊o論是iOS開發(fā)還是Mac OS X開發(fā),都沒有像Android那樣豐富的布局概念的引入,如果沒有xib,還停留在手寫UI的時(shí)代,可以說UI開發(fā)上Android完爆iOS,但如果用xib進(jìn)行UI開發(fā),則iOS的優(yōu)勢更大。
2015 WWDC session 215——What's New in Storyboard中,蘋果的演講嘉賓現(xiàn)場統(tǒng)計(jì)用xib開發(fā)人數(shù)的占比已經(jīng)很高了。我個(gè)人對學(xué)習(xí)新東西一直充滿熱情,雖然有時(shí)淺嘗輒止,但:
我心中那團(tuán)火是不會(huì)熄滅滴(少林足球,周星馳)
做技術(shù)就是要不斷學(xué)習(xí),要享受這個(gè)過程。
xib的確有時(shí)不如代碼表達(dá)清晰,尤其是“連線”很多的時(shí)候,但是如果你對xib很熟悉,看別人的xib遠(yuǎn)比看別人的代碼效率要高很多。
xib有時(shí)候出錯(cuò)是不容易被發(fā)現(xiàn),尤其是在對xib掌握不是很好的情況下,多連一條線、少連一條線的錯(cuò)誤很難看出來。
xib文件產(chǎn)生的沖突其實(shí)很容易被解決,一天一點(diǎn)xib:3先學(xué)會(huì)解決文件沖突中有詳細(xì)說明。
xib執(zhí)行效率的確沒有代碼效率高,因?yàn)榧虞d要多一步——把xib文件加載到內(nèi)存中,當(dāng)年我在iOS4上用iPad一代開發(fā)的時(shí)候,就有明顯感覺——一個(gè)頁面xib文件過多(當(dāng)時(shí)用xib做表單提交數(shù)據(jù),大概有60、70個(gè)控件)加載速度變慢(當(dāng)時(shí)延時(shí)1、2s),但是就現(xiàn)在的硬件水平和一般的需求來說,這絕對不是瓶頸。
xib的確有時(shí)會(huì)使得對象難以封裝,但是如果用了xib你會(huì)發(fā)現(xiàn)有些封裝也不是必要的了,因?yàn)閤ib如此方便,拷貝一個(gè)xib出來改改就是了。其實(shí)如果你對xib掌握及其熟練、對封裝理解很好的話,其實(shí)xib有時(shí)會(huì)提高封裝性,舉個(gè)簡單的例子:比如現(xiàn)在有個(gè)基類叫BrandView,BrandView有個(gè)logo的屬性,這個(gè)屬性是UIView的實(shí)例,根據(jù)不同的品牌展現(xiàn)不同樣式的logo,BenzBrandView和BMWBrandView都繼承自BrandView,且都是用xib來管理UI的,那么我們就可以在基類中聲明:
@property (nonatomic, strong) IBOutlet UILabel *brandLabel;
而在子類的xib文件中分別與基類的這個(gè)IBOutlet屬性“連線”,這樣既將屬性“抽”到了基類中,又不用基類寫創(chuàng)建的代碼,就是說基類可以利用子類的xib文件與自己做關(guān)聯(lián)從而避免了創(chuàng)建UI的代碼,同時(shí)又能實(shí)現(xiàn)很好的封裝。
優(yōu)點(diǎn)方面:不需要繁瑣地、千篇一律地創(chuàng)建對象、布局對象,也不再使用代碼給屬性賦值。SB還會(huì)省去很多頁面跳轉(zhuǎn)之間的膠水代碼(segue),甚至不用寫代碼就能實(shí)現(xiàn)在各個(gè)頁面中切換,tableView的cell可以直接拖到tableView里,可以給tableView添加header、footer,可以添加手勢、設(shè)置代理、size classes使得適配變得更加容易、xib也使得國際化變得很容易、可以通過代碼給xib動(dòng)態(tài)加入屬性...這些東西,有些根本不用寫代碼,有些只需寫極少量代碼就能實(shí)現(xiàn)。
總結(jié)
歡迎大家和我一起走進(jìn)xib的世界,共同學(xué)習(xí)、共同成長。
歡迎大家和我交流溝通,若文章中有錯(cuò)誤和紕漏,懇請指正,謝謝。