接上篇:iOS底層 消息查找流程在lookUpImpOrForward方法中會(huì)看到這樣一段代碼,當(dāng)在緩存和方法列表中未能找到相應(yīng)的imp時(shí),會(huì)調(diào)用這段代碼嘗試去解析。 然后會(huì)...
接上篇iOS底層 objc_msgSend分析消息發(fā)送會(huì)調(diào)用lookUpImpOrForward方法,源碼如下, 查找從消息列表里查找消息 如果沒找到會(huì)返回nil, 調(diào)用ca...
1.首先通過斷點(diǎn)查看objc_msgSend調(diào)用,在調(diào)用方法處設(shè)置斷點(diǎn),在菜單欄中選擇Debug -> View Debugging -> 勾選Always Show Dis...
類的結(jié)構(gòu)源碼如下,前面分析了isa,superclass,bits都已經(jīng)分析過了,現(xiàn)在來看看cache,首先查看cache所在的位置。首先貼源碼: cache_t在結(jié)構(gòu)體ob...
同isa一樣從源碼入手,首先從源碼中找到類Class的定義和結(jié)構(gòu) 繼續(xù)找objc_class cache_t class_rw_t 找const class_ro_t *ro...
一、isa的初始化 首先從源碼中找到類Class的定義和結(jié)構(gòu) 繼續(xù)找objc_class 繼續(xù)找objc_object 會(huì)發(fā)現(xiàn)isa的類型是isa_t,isa_t源碼,如下:...
內(nèi)存對(duì)齊之前需要掌握的一張圖 內(nèi)存對(duì)齊的目的 對(duì)于程序而言,一個(gè)變量的數(shù)據(jù)存儲(chǔ)范圍是在一個(gè)尋址步長(zhǎng)范圍內(nèi)的話,這樣一次尋址就可以讀取到變量的值,如果是超出了步長(zhǎng)范圍內(nèi)的數(shù)據(jù)存...
過去,薛之謙在《火星情報(bào)局》有個(gè)口頭禪“整段垮掉”。 現(xiàn)在這個(gè)口頭禪應(yīng)該可以升級(jí)一下了。 “整期垮掉”了解一下。 垮掉的正是它—— 《火星情報(bào)局4》 (以下簡(jiǎn)稱《火星4》) ...
前言 當(dāng)用戶按下home鍵的時(shí)候,iOS的App并不會(huì)馬上被kill掉,還會(huì)繼續(xù)存活若干時(shí)間。理想情況下,用戶點(diǎn)擊App的圖標(biāo)再次回來的時(shí)候,App幾乎不需要做什么,就可以還...