category为什么不能添加属性

category是在程序加载运行的时候,才加载到内存中,此时各个类的内存布局已经确定了,不可以再更改。

可以加属性,但是没有对应的成员变量存储区域。类的成员变量存储区在编译时就确定了。所以只能定义成@dynamic,运行时关联一块内存到对象。

在runtime中存在一个类型为AssociationHashMap的哈希映射表保存着对象动态添加的属性,每个对象以自身地址为key维护着一个绑定属性表,我们动态添加的属性就都存储在这个表里,这也是动态添加property能成功的基础。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,149评论 6 13
  • 生命是条长河,有的人上岸。也有的人在这条长河中畅游着。生命的意义,取决于你对于生活的态度。记得以前有人说过,生活是...
    大个dae阅读 263评论 0 0
  • 欢乐颂2在如火如荼的进行着,我也是想做安迪那样的人,拥有曲筱绡的家族力量,伴随着关雎尔的文静,长得邱莹莹般清纯,但...
    陌上风存阅读 302评论 0 0
  • 推酷诚意满满的技术周刊《编程狂人》第一八二期, 下面是内容列表,干货多多,也可以移步到官网进一步阅读。 前端开发 ...
    推酷阅读 597评论 0 3