IOS categoty,成员变量,属性实现的总结
来源:互联网 发布:淘宝在哪里查消费总额 编辑:程序博客网 时间:2024/05/04 17:50
我们首先看看关于类别的结构体:
从上面结构体中我们可以看到这几个属性:
category_name:类别的名字。
class_name:类别的类。
instance_methods:类别中的实例方法(-)。
class_methods:类别中的类方法(+)。
protocols:类别中的协议。
那么类别怎么往原始类中添加方法呢?
1.首先他将类别中的类方法添加到class的mehod class中。
2.然后将类别中的实例方法以倒序的方式添加到类别中的实例方法中,如果原本类中有方法a,b,新家的类别中有方法c,d。那么方法列表中保存方法的顺序为c,d,a,b。
3.当类别添加完毕后,回销毁原始的类别。
我们再来看看成员变量和属性的结构体。
先看成员变量:
上述结构体前面两个参数就不用说了,我们主要看看第3个参数:ivar_offset,他是说明这个成员变量和基地址的偏移。当我们编译我们的类的时候,编译器会给我门类的属性生成一个布局。
Objective-C总Runtime的那点事儿
当我们往某个类父类中添加属性时,编译器会更改我们上述的布局。这时子类的布局就会出错。
这时应该怎么办呢?
其实偏移地址是通过基类地址+对象地址+ivar偏移地址来算出实际的地址。
那么属性是怎么回事,属性其实就是将属性转化为上述的成员变量,然后编译器自动合成setter和getter方法。
0 0
- IOS categoty,成员变量,属性实现的总结
- ios 成员变量 属性
- iOS 成员变量跟属性的区别
- ios 属性与成员变量的区别
- ios--成员变量与属性的区别
- iOS 成员变量和属性的区别
- iOS 成员变量和属性的关系
- iOS 成员变量与属性的区别
- iOS 成员变量,实例变量,属性变量的区别,联系
- iOS的成员变量、实例变量、属性变量
- ios 属性(属性变量)和成员变量
- IOS中"声明属性"和类成员变量的关系
- 【转】iOS中属性与成员变量的区别
- IOS中属性与成员变量的区别
- iOS中属性与成员变量的区别
- iOS中属性与成员变量的区别
- iOS中属性与成员变量的区别
- 【转】iOS中属性与成员变量的区别
- 【网络安全】What is a Digital Signature?
- Linux内核分析 - 网络[一]:收发数据包的调用
- Material Design复杂响应式设计
- G++和C++区别
- 金字塔原理汇报工作
- IOS categoty,成员变量,属性实现的总结
- jQuery $ajax $post $get
- libxml2如何解析xml格式的字符串
- Macbook 卸载 Firefox
- Swift - 告警提示框(UIAlertController)的用法
- Linux内核分析 - 网络[二]:网卡驱动接收报文
- Redhat6.5下卸载Mysql5.6.31教程
- 安卓倒计时
- 文章标题