码迷,mamicode.com
首页 > 其他好文 > 详细

能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么

时间:2017-03-01 14:28:18      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:add   注册   实例   pair   list   函数   链表   out   var   

不能向编译后得到的类中增加实例变量!
能向运行时创建的类中添加实例变量!

  • 因为编译后的类已经注册在runtime中,类结构体中的objc_ivar_list 实例变量的链表和instance_size实例变量的内存大小已经确定,同时runtime 会调用class_setIvarLayout 或 class_setWeakIvarLayout来处理strong weak引用,所以不能向存在的类中添加实例变量。
  • 运行时创建的类是可以添加实例变量,调用 class_addIvar 函数,但是得在调用 objc_allocateClassPair 之后,objc_registerClassPair 之前,原因同上。

能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么

标签:add   注册   实例   pair   list   函数   链表   out   var   

原文地址:http://www.cnblogs.com/VzhanggengD/p/6483853.html

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