Runtime其實(shí)就是c嘉裤、c++、匯編實(shí)現(xiàn)的api据过,調(diào)用OC中的方法惋砂,其實(shí)就是調(diào)用runtime的api方法,進(jìn)而實(shí)現(xiàn)c語(yǔ)言函數(shù)的調(diào)用绳锅。
運(yùn)行時(shí)特性:向編譯后的類添加方法西饵,轉(zhuǎn)發(fā)消息,交換方法等鳞芙。
核心功能:1>.把C中的結(jié)構(gòu)體封裝成OC中的類眷柔。2>.執(zhí)行OC方法 消息機(jī)制 trigger執(zhí)行c函數(shù)。
在程序運(yùn)行過(guò)程中原朝,動(dòng)態(tài)的創(chuàng)建類驯嘱,動(dòng)態(tài)添加、修改這個(gè)類的屬性和方法喳坠;
遍歷一個(gè)類中所有的成員變量鞠评、屬性、以及所有方法
消息傳遞壕鹉、轉(zhuǎn)發(fā)
Screen Shot 2020-09-07 at 11.56.11 PM.png
Screen Shot 2020-09-08 at 4.19.22 PM.png
Runtime的內(nèi)容
Screen Shot 2020-09-08 at 4.33.18 PM.png
1.數(shù)據(jù)結(jié)構(gòu)
(1).id就是實(shí)例對(duì)象 對(duì)應(yīng)runtime中 objc_object結(jié)構(gòu)體
里面的isa指向Class 類對(duì)象
(2).Class(類對(duì)象)對(duì)應(yīng)runtime中的objc_class結(jié)構(gòu)體---->objc_object
Screen Shot 2020-09-08 at 5.52.31 PM.png
(3).isa指向
Screen Shot 2020-09-08 at 4.48.54 PM.png
2.實(shí)例對(duì)象剃幌,類對(duì)象,元類對(duì)象
Screen Shot 2020-09-08 at 10.12.08 PM.png
3.消息傳遞
Screen Shot 2020-09-08 at 10.33.17 PM.png
4.消息轉(zhuǎn)發(fā)機(jī)制(當(dāng)沒(méi)有實(shí)現(xiàn)方法時(shí)候觸發(fā))
Screen Shot 2020-09-08 at 10.44.52 PM.png
5.Method Swizzling(交換兩個(gè)方法的實(shí)現(xiàn))
Screen Shot 2020-09-08 at 11.01.04 PM.png
6.動(dòng)態(tài)添加方法
Screen Shot 2020-09-08 at 11.07.30 PM.png