首页 > 代码库 > 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么
能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么
不能向编译后得到的类中增加实例变量!
能向运行时创建的类中添加实例变量!
- 因为编译后的类已经注册在runtime中,类结构体中的
objc_ivar_list
实例变量的链表和instance_size
实例变量的内存大小已经确定,同时runtime 会调用class_setIvarLayout
或class_setWeakIvarLayout
来处理strong weak引用,所以不能向存在的类中添加实例变量。 - 运行时创建的类是可以添加实例变量,调用
class_addIvar
函数,但是得在调用objc_allocateClassPair
之后,objc_registerClassPair
之前,原因同上。
能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。