@tom555cat 个人觉得这个问题与Non Fragile ivars无关
在Objective-C提供的runtime函数中,确实有一个class_addIvar()函数用于给类添加成员变量,但是文档中特别说明:
This function may only be called after objc_allocateClassPair and before objc_registerClassPair. Adding an instance variable to an existing class is not supported.
意思是说,这个函数只能在“构建一个类的过程中”调用。一旦完成类定义,就不能再添加成员变量了。经过编译的类在程序启动后就被runtime加载,没有机会调用addIvar。程序在运行时动态构建的类需要在调用objc_registerClassPair之后才可以被使用,同样没有机会再添加成员变量。
当别人问Category为什么不能添加属性学习写简书博客,每次写简书都是对过往的回顾 前言 这段时间换工作,发现面试经常会问到一个问题:分类中能不能定义实例变量,为什么?答案:不能。类的内存布局在编译时期就已经确定了...