在消息經(jīng)過慢速查找之后還沒有找到,就會(huì)走到resolveMethod_locked進(jìn)行消息動(dòng)態(tài)決議,看一下resolveMethod_locke...
在Object-C中調(diào)方法在底層就是調(diào)objc_msgSend進(jìn)行發(fā)送消息,消息發(fā)送時(shí)先在Class的cache中查找imp,這一步為快速查找,...
1、方法調(diào)用本質(zhì) 如下圖中展示的對(duì)象調(diào)用方法,在底層是怎么調(diào)的呢: 為了探索這個(gè)問題,用clang將main.m文件編譯為C++文件,指令為:c...
我們先來(lái)回顧一下objc_class的幾個(gè)主要的結(jié)構(gòu),如圖: 主要是有4個(gè)變量:ISA、superclass、cache、bits,其中isa和...
1、指針平移 在介紹類的內(nèi)存結(jié)構(gòu)之前先介紹一下指針平移,在后面會(huì)用到相關(guān)知識(shí)。 這張圖的意思呢就是定義一個(gè)整型數(shù)組 ,里面的元素分別為 , , ...
1、Class底層結(jié)構(gòu)分析 在聯(lián)合體和ISA一篇文章中介紹了對(duì)象的Class方法其實(shí)是獲取對(duì)象的isa.shiftbits,那么Class對(duì)應(yīng)的...
1、聯(lián)合體位域 在對(duì)象原理一[http://www.itdecent.cn/p/a6ed5aafeb36]的一文中研究了結(jié)構(gòu)體大小,可以看出不...
在Flutter中每個(gè)Widget的構(gòu)造方法都提供了一個(gè)可選參數(shù)Key,這個(gè)Key有什么用呢? 1、案例 現(xiàn)在看一個(gè)小小的Demo,這個(gè)Demo...
主要是通過底層源碼來(lái)分享一下Flutter是怎么渲染的。 1、Widget樹 樹是一種數(shù)據(jù)結(jié)構(gòu),Widget樹就是存儲(chǔ)Widget的樹結(jié)構(gòu)。Wi...