首页 > 其他 > 详细

能否想编译后的类中添加实例变量,能否像运行时创建的类添加实例变量?为什么?

时间:2017-02-25 21:43:57      阅读:247      评论:0      收藏:0      [点我收藏+]
  1. 不能向编译后得到的类增加实例变量
  2. 能向运行时创建的类中添加实例变量

解释:

  1. 编译后的类已经注册在runtime中,类结构体中的objc_ivar_list实例变量的链表和instance_size实例变量的内存大小已经确定,runtime会调用class_setvarlayout或class_setWeaklvarLayout来处理strong weak引用.所以不能向存在的类中添加实例变量

     2.运行时创建的类是可以添加实例变量,调用class_addIvar函数.但是的在调用objc_allocateClassPair之后,objc_registerClassPair之前,原因同上.

能否想编译后的类中添加实例变量,能否像运行时创建的类添加实例变量?为什么?

原文:http://www.cnblogs.com/haotianToch/p/6442793.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!