Objective-C的内省方法

来源:互联网 发布:国家软件资格考试认证 编辑:程序博客网 时间:2024/05/21 17:03

方法的存在意义

OC存在一种id的类型,id就是指针,可以指向任何类型的对象。id的存在能够使得NSArray和NSDictionary这种集合类型能够很方便地容纳各种类的对象。但是编译器并不会对id的响应的方法进行检验,也就是说id类型的对象响应任何方法都不会在编译阶段-compile-报错,貌似警告也没有吧……而这种错误会在运行时-runtime-导致崩溃-crash。

所以,我们需要在运行时可以动态的检验对象是否符合相应的条件,以避免程序运行时崩溃,OC为我们提供了一些便捷的方法来进行运行时的检验。它们被定义在NSObject协议中。

方法的内容

- (BOOL)isKindOfClass:(Class)aClass;
- (BOOL)isMemberOfClass:(Class)aClass;
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
- (BOOL)respondsToSelector:(SEL)aSelector;
使用方法比较简单,从名字就可以看出(OC的方法大多都很直观)。下面简单总结下使用的场合。

方法的使用场合

愚见,凡是涉及到id的时候,都要记得考虑一下是否有进行检查的必要。
比如:
1. 从NSArray等集合中提取对象进行后续操作;
2. 所有的MVC盲通信,如目标动作、代理等。

0 0
原创粉丝点击