在分类(Category)中添加属性

在ios开发中,分类的概念我们都很熟悉,通常我们会利用分类来给一个类添加一些额外的方法,添加方法的操作和平时在类中添加方法的操作一致,这里就不再赘述。下面我们来说说怎样在分类中添加属性:

添加属性可以再分类的.h文件中来添加,也可以再.m文件中的匿名分类中添加,我们像添加普通属性一样添加分类属性,这是编译器不会报任何的异常,但是当使用到这些分类属性的时候会导致程序崩溃,为了解决这个问题,我们需要用到runtime运行时。

举个栗子:
添加的分类属性如下:

@property (nonatomic, copy) NSString *title;

添加运行时头文件

#import 

然后重写属性的set和get方法

// 定义属性的Key
static NSString *titleKey = @"titleKey";

- (void)setTitle:(NSString *)title
{
    objc_setAssociatedObject(self, &titleKey, title, OBJC_ASSOCIATION_COPY);
}

- (NSString *)title
{
    return objc_getAssociatedObject(self, &titleKey);
}

objc_setAssociatedObject方法中,有四个参数,分别是:源对象,关联时的用来标记是哪一个属性的key(因为你可能要添加很多属性),关联的对象和一个关联策略。

重写完set和get方法后,就可以正常使用了。

参考文章:【忆江南的博客】的【给分类(Category)添加属性】

你可能感兴趣的:(在分类(Category)中添加属性)