iOS 笔记

来源:互联网 发布:amd显卡游戏优化软件 编辑:程序博客网 时间:2024/06/02 05:01

1、Category为什么只可为对象增加成员方法,却不能增加成员变量?

对象在内存中的排布可以看成一个结构体,该结构体的大小并不能动态变化,所以无法在运行时动态给对象增加成员变量,相对的对象的方法定义都保存在类的可变区域中,在 Objective-C 1.0 中,我们可以看到方法的定义列表是一个名为 methodLists的指针的指针。通过修改该指针指向的指针的值,就可以实现动态地为某一个类增加成员方法。这也是Category实现的原理。同时也说明了为什么Category只可为对象增加成员方法,却不能增加成员变量。


0 0