很久没有总结过了,一直在赶项目。。。框架
今天来总结一下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)