iOS 如何给 Category 添加属性?

释放双眼,带上耳机,听听看~!
Category

Objective-C 中的 Category它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法。

分类特点

1.分类是用于给原有类添加方法的,因为分类的结构体指针中,没有属性列表,只有方法列表。原则上讲它只能添加方法, 不能添加属性(成员变量),实际上可以通过其它方式添加属性 ;
2.分类中的可以写@property, 但不会生成setter/getter方法, 也不会生成实现以及私有的成员变量,会编译通过,但是引用变量会报错;
3.如果分类中有和原有类同名的方法, 会优先调用分类中的方法, 就是说会忽略原有类的方法,同名方法调用的优先级为 分类 > 本类 > 父类;

通过上述可知,是有办法给Category添加属性的

如何给Category添加属性?

可以通过关联对象给Category添加属性

@interface NSObject (Extension)

@property (nonatomic,copy  ) NSString *name;

@end


@implementation NSObject (Extension)

- (void)setName:(NSString *)name {
    
    objc_setAssociatedObject(self, @selector(name), name, OBJC_ASSOCIATION_COPY_NONATOMIC);
}


- (NSString *)name {
    
    return objc_getAssociatedObject(self,@selector(name));
}

@end

 

人已赞赏
iOS文章

iOS 获取手机电量 电量变化通知

2019-12-4 11:23:16

iOS文章

iOS tableView点击与手势冲突的解决方法

2019-12-4 12:09:34

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索