分类只能给已有的类添加方法,但是不能直接增加实例变量,如果写上默认的getter和setter方法也是编译不通过的,这时候就可以在getter和setter中用动态关联对象的方法来写:
//set function
void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy);
//get function
id objc_getAssociatedObject(id object, const void*key);
这样就可以给已有的类添加属性了。
网友评论