很久沒有總結過了,一直在趕項目。。。框架
今天來總結一下OC中的反射機制,有什麼不對的地方,還請多多海涵。編碼
反射機制,簡單的說就是在程序運行期間經過類的名字來動態的獲取類的信息,從而實現動態的建立類,以及動態的調用類的方法等。orm
當咱們在編碼的時候不知道要建立哪一個類的對象,須要在運行期間根據配置文件來獲取咱們要建立的對象的類的名字。這時候咱們就能夠經過反射機制,在程序運行期間經過類的名字獲取類的信息。對象
OC中經常使用的反射機制的幾種方法,基本上都在Founditon框架和NSObjct類的方法列表裏面。blog
1.NSObjct類中的方法it
1. isKindOfClassio
該方法用於判斷一個對象是否是一個類或者這個類的字類的實例對象。form
2. isMemberOfClassclass
該方法用於判斷一個對象是否是一個類的實例對象配置
3.conformsToProtocol
該方法用於判讀一個對象是否遵循了一個協議
4.respondsToSelector
該方法用於判斷一個對象是否實現了這個方法
2.Foundation (NSObjCRuntime.h)
1. NSStringFromSelector
該方法能夠動經過一個 SEL 獲取方法的名字
2. NSSelectorFromString
該方法能夠經過方法的名字獲取對應的 SEL
除了這種方法還能夠經過下面的方面來獲取
一、@Selector()
3. NSStringFromClass
該方法能夠獲取類的名字
4. NSClassFromString
該方法能夠根據一個類的名字獲取到這個類
除了這種方法,咱們還能夠經過下面的方法獲取類的名字
一、[self class];
二、[Class class];
動態調用方法
一、[self performSelector:(id) withObject:(id)];
二、objc_msgSend(self,SEL,parameters)