码迷,mamicode.com
首页 > 移动开发 > 详细

iOS_Runtime

时间:2016-07-22 19:24:51      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

Objective_C是一门动态语言,它把很多静态语言在编译和链接时做的事情放到了运行时去处理,在运行时实现了对类、方法、成员变量、属性等信息的管理机制,这一套机制为我们开发提供了极大的灵活性==》Runtime。

Runtime是一个用C和汇编语言写的动态库,利用它,我们可以做的事情有很多。下面一起来看一下:

在学习Runtime之前,有必要先知道几个数据结构:

1.类的数据结构,着重关注红圈的几个字段

技术分享

技术分享

2.类的实例的数据结构

技术分享

技术分享


3.Runtime提供了非常多的方法来进行各种操作。下面我们通过简单实例来使用一些常用操作。

  首先创建如下Person类:

  技术分享

  再看如下代码:

  技术分享

 结果如下:

技术分享

==》通过上面两个数据结构我们知道,类的实例变量有个isa指针,指向该实例所属类,即Person类,而Person类有个superclass指针,指向其父类,即NSObject。很好理解。


4.接下来我们获取一下类的成员变量,属性,方法,协议

1)获取类的成员变量

   技术分享

  技术分享

2) 获取类的属性

技术分享

==》这里多说一点:本质上一个属性背后必然对应着一个成员变量,但是属性又不仅仅只是一个成员变量,属性还会根据自己对应的属性特性的定义来对这个成员变量进行一系列的封装:提供 Getter/Setter 方法、内存管理策略、线程安全机制等等。

3)获取类的方法 (方法必须要有具体实现)

技术分享

4)获取某类遵守的协议

技术分享

技术分享


就先讲这些比较基本的吧,就是通过Runtime获取一个类的成员变量,属性,方法,遵守的协议。当我们得到这些东西后,接下来就可以“ 随心所欲”了。下一篇博客将会讲解如何动态创建一个类,如何动态添加/修改成员变量和属性,如何动态添加/修改/替换方法,以及一些注意事项。

iOS_Runtime

标签:

原文地址:http://blog.csdn.net/qq_27325349/article/details/51994769

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