OC反射机制

2018-07-16  本文已影响56人  不简单的风度

概述

在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。布莱恩·史密斯(Brian Cantwell Smith)在1982年的博士论文《编程语言中的步骤式反射》("Procedural Reflection in Programming Languages")中介绍了“编程语言的计算反射”概念,并且引入meta-circular解释器的概念用作3-Lisp的一个组成部分。本文主要讨论OC中的反射。OC反射机制牵涉到的方法不止这么多,这里只是列出一些常用的。

基本反射

[self class]
NSClassFromString(@“className”)
NSSelectorFromString(@“method”)
- (BOOL)isKindOfClass:(Class)aClass
- (BOOL)isMemberOfClass:(Class)aClass
+ (BOOL)isSubclassOfClass:(Class)aClass
- (BOOL)conformsToProtocol:(Protocol *)aProtocol

高级反射

objc_msgSend(receiver, selector)
objc_msgSend(receiver, selector, arg1, arg2,...)
objc_setAssociatedObject    objc_getAssociatedObject

总结

通过以上方法我们可以可以获取类信息、属性方法获取、类的动态加载、方法的动态调用、动态添加类和方法等。

参考

Objective-C 反射篇
OC中的runtime与Java反射机制对比

上一篇 下一篇

猜你喜欢

热点阅读