码迷,mamicode.com
首页 > 其他好文 > 详细

RunTime 入门

时间:2016-03-10 12:47:19      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

这是一篇浅显实用 易记 易理解的关于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 入门

标签:

原文地址:http://www.cnblogs.com/Jenaral/p/5261224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!