Runtime快速入门

这是一篇浅显实用 易记 易理解的关于runtime的解读。

Runtime 中的方法主要以五个单词开头——class(类)、object(实例)、method(方法)、propert(属性)、ivar(成员变量)

它们代表了方法的操作对象,如class开头的

OBJC_EXPORT Ivar *class_copyIvarList(Class cls, unsigned int *outCount) 

     __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);

这个方法很吓人,有很多单词,一看脑子就疼,但大部分单词不是我们关心的,只提取中间一段

class_copyIvarList   这是一个方法名,它以class开头,说明它与class有关(class是类,objc是实例)

而在class(类)里我们可以得到什么呢,没有被实例化的话好像什么也不是。其实不是这样的。class是一个模版,属性、方法、成员变量的信息我们都可以从中获取。

我们再多分析一点

class_copyIvarList(Class cls, unsigned int *outCount)  这里列出了它需要的参数,一个class类和一个无符号的int类地址。

 Ivar *class_copyIvarList(Class cls, unsigned int *outCount)方法前是它的返回类型,一个ivar类型。ivar类型是class类型成员变量的信息索引,而不是载体。例如我们可以这样获得成员变量名

const char* name = ivar_getName(ivar);

可以这样获得成员变量指向

id ivarContent = object_getIvar(self, ivar);

可以看到这都不是从ivar中直接取出来的,而是通过ivar用其他办法获得的。

 

这里我们又用到两个不同单词开头的方法 ——ivar、object。可以看到ivar开头的方法是用来取变量名字的,而object开头的方法接受了两个值——实例和变量索引(ivar类型),它从实例中拿出ivar索引代表的变量取出变量指向做返回值。

说到这里大家就能基本看懂runtime里面的方法了,可以出师了(^_^)Y

posted @ 2015-12-05 19:26  亲爱的八  阅读(435)  评论(0编辑  收藏  举报