iOS開(kāi)發(fā)捷徑學(xué)習(xí)(二)

上一章內(nèi)容講解了xib文件編譯后成nib臭蚁,而反過(guò)來(lái)nib文件如何加載完成頁(yè)面的渲染的呢舅锄?我們來(lái)梳理一下整個(gè)過(guò)程。

nib的加載過(guò)程分析

1.將nib文件加載入內(nèi)存

一種法法:通過(guò)bundle加載

 [[NSBundle mainBundle] loadNibNamed:@"TestView" owner:self options:nil][0];

還有一種方法张肾,通過(guò)nib加載

[UINib nibWithNibName:@"TestView" bundle:[NSBundle mainBundle]];

2.“解固化”并實(shí)例化出nib文件里對(duì)應(yīng)的對(duì)象

即將nib對(duì)象進(jìn)一步解壓,生成對(duì)應(yīng)的模型對(duì)象盆昙。這個(gè)過(guò)程會(huì)調(diào)用initWithCoder方法桶良,將nib數(shù)據(jù)序列化,生產(chǎn)對(duì)應(yīng)的模型對(duì)象稽犁,這個(gè)方法中就可以給這個(gè)對(duì)象添加子對(duì)象了焰望。

3.建立connections(outlets、actions)

outlets與actions就是我們之前提到的建立的IBOutlet與IBAction的“連接”已亥。建立connections的順序是先建立outliets連接熊赖,然后建立actions連接。sourcecode中就會(huì)將兩者放在<connections>標(biāo)簽中虑椎,nib加載到步驟3的時(shí)候就會(huì)根據(jù)這個(gè)標(biāo)簽去建立對(duì)應(yīng)的關(guān)系震鹉。


代碼@2x.png
源文件@2x.png

4.調(diào)用awakeFromNib方法:

- (void)awakeFromNib {
[super awakeFromNib]; 
}

注意該函數(shù)只會(huì)在綁定xib的類(lèi)中調(diào)用,不會(huì)在它的File's Owner及其內(nèi)部的Object類(lèi)中調(diào)用

5.將xib中可見(jiàn)的控件顯示出來(lái)捆姜。

獲得了所有的對(duì)象并加載所有代碼邏輯后传趾,通過(guò)calayer渲染到屏幕上。

了解整個(gè)過(guò)程后娇未,我們也理解了為什么使用xib比代碼效率相對(duì)慢一些墨缘。另外還一個(gè)需要注意的加載過(guò)程的問(wèn)題,當(dāng)我們使用xib加載tableview的cell的時(shí)候,一定要注意不要使用第一步中第一種NSBundle的loadNibNamed的加載镊讼,要使用第二種UINib的nibWithNibName方法加載cell宽涌。


cell加載.jpeg

tableview的一屏?xí)@示多個(gè)cell,這個(gè)時(shí)候就涉及一個(gè)復(fù)用的問(wèn)題蝶棋,NSBundle對(duì)象無(wú)法與xib文件產(chǎn)生映射關(guān)系卸亮,所以每次加載cell都是讀文件,而UINib對(duì)象與xib文件是映射關(guān)系玩裙,它就是內(nèi)存中的xib文件兼贸,圖中的兩條紅色箭頭是理解的關(guān)鍵,所以我們可以通過(guò)UINib對(duì)象來(lái)達(dá)到緩存的目的吃溅,這樣在tableview滾動(dòng)式時(shí)溶诞,就會(huì)動(dòng)態(tài)的取緩存的cell,不用頻繁加載文件决侈。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末螺垢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赖歌,更是在濱河造成了極大的恐慌枉圃,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庐冯,死亡現(xiàn)場(chǎng)離奇詭異孽亲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)展父,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)返劲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人犯祠,你說(shuō)我怎么就攤上這事旭等。” “怎么了衡载?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)隙袁。 經(jīng)常有香客問(wèn)我痰娱,道長(zhǎng),這世上最難降的妖魔是什么菩收? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任梨睁,我火速辦了婚禮,結(jié)果婚禮上娜饵,老公的妹妹穿的比我還像新娘坡贺。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布遍坟。 她就那樣靜靜地躺著拳亿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愿伴。 梳的紋絲不亂的頭發(fā)上肺魁,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音隔节,去河邊找鬼鹅经。 笑死,一個(gè)胖子當(dāng)著我的面吹牛怎诫,可吹牛的內(nèi)容都是我干的瘾晃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼幻妓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蹦误!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涌哲,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胖缤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后阀圾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哪廓,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年初烘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涡真。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肾筐,死狀恐怖哆料,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吗铐,我是刑警寧澤东亦,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站唬渗,受9級(jí)特大地震影響典阵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镊逝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一壮啊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撑蒜,春花似錦歹啼、人聲如沸玄渗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)藤树。三九已至,卻和暖如春份企,著一層夾襖步出監(jiān)牢的瞬間也榄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工司志, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留甜紫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓骂远,卻偏偏與公主長(zhǎng)得像囚霸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子激才,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容