iOS开发-在分类(Category)文件中添加属性
程序员文章站
2023-12-23 21:14:51
ios开发-在分类(category)文件中添加属性,在分类中添加属性时要注意,在分类头文件中添加的属性不会自动生成setter和getter,需自己以runtime方法实现,并且不能以下划线+属性...
ios开发-在分类(category)文件中添加属性,在分类中添加属性时要注意,在分类头文件中添加的属性不会自动生成setter和getter,需自己以runtime方法实现,并且不能以下划线+属性名的方式访问。
例如我们在分类头文件中写这么一个属性:
@property (nonatomic, strong) classname *propertyname;这个属性这时并不存在 getter 和 setter方法,需要在.m文件中自己实现
static const void *classnamekey = &classnamekey; //然后自己实现getset方法 - (classname *)propertyname { return objc_getassociatedobject(self, classnamekey); } - (void)setpropertyname:(classname *)propertyname { objc_setassociatedobject(self, classnamekey, propertyname, objc_association_retain_nonatomic); }
另外要注意,在分类文件中无法添加全局变量,如果硬添加会编译报错,如图:
因此,如果有人问:如果在分类中添加一个与原类中属性名称相同的全局变量并在方法中赋值,原类属性的值是否发生变化,这时分两种情况,要么他是在考察你是否知道分类中无法添加全局变量,要么他是个逗逼。