RuntimeUseCases
Runtime的一些使用案例和場景.
前話
這段時(shí)間繼續(xù)學(xué)習(xí)了下Runtime.在網(wǎng)上找到了兩篇比較好的文章.比起其他的概念性的非常強(qiáng)的概念性的描述,非常適合初學(xué)者入門.由此我也覺得,遇到陌生的知識,我們先用,有個大體印象之后,然后再研究對應(yīng)的底層原理,直接啃底層,不是十分明智的想法.
第一部分 -《OC最實(shí)用的runtime總結(jié)券盅,面試书幕、工作你看我就足夠了!》
代碼
上邊的代碼范例,主要是是從《OC最實(shí)用的runtime總結(jié)陕凹,面試钞馁、工作你看我就足夠了甚疟!》的代碼做了一個具體的抽取,方便吧大家學(xué)習(xí)和查看.作者原標(biāo)題的有點(diǎn)浮夸,但是內(nèi)容確實(shí)寫的很好!
-
Runtime_ClassMethodAndImplementationsMethodDeals
- 獲取類方法和實(shí)例方法,并且交換方法 -
Runtime_ReplaceSystemMethod
- 攔截系統(tǒng)方法,并且替換 -
Runtime_CategoryAddAttribute
- 給分類增加屬性 -
Runtime_NSCoding
- Runtime歸檔解檔方法,不必一個一個添加屬性 -
Runtime_MJExtensionBase
- 字典轉(zhuǎn)模型(MJExtension的基礎(chǔ)原理)
基礎(chǔ)方法說明
獲得某個類的類方法
Method class_getClassMethod(Class cls , SEL name)
獲得某個類的實(shí)例對象方法
Method class_getInstanceMethod(Class cls , SEL name)
交換兩個方法的實(shí)現(xiàn)
void method_exchangeImplementations(Method m1 , Method m2)
獲得某個類的所有成員變量(outCount 會返回成員變量的總數(shù)) 參數(shù): 1汽摹、哪個類 2综苔、放一個接收值的地址酣倾,用來存放屬性的個數(shù) 3煎饼、返回值:存放所有獲取到的屬性讹挎,通過下面兩個方法可以調(diào)出名字和類型
Ivar *class_copyIvarList(Class cls , unsigned int *outCount)
獲得成員變量的名字
const char *ivar_getName(Ivar v)
獲得成員變量的類型
const char *ivar_getTypeEndcoding(Ivar v)
更加具體的實(shí)現(xiàn)過程,還需要我們自己點(diǎn)開文章跟著作者親自來一遍.
代碼鏈接
第二部分
交流
希望能和大家交流技術(shù)
我的博客地址: http://www.lilongcnc.cc/