在分类(Category)中添加属性

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

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

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

@property (nonatomic, copy) NSString *title;

添加运行时头文件

#import <objc/runtime.h>

然后重写属性的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)添加属性】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,183评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,044评论 6 13
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,890评论 0 9
  • 在iOS中,分类应该是oc比较鲜明的语法特性,用起来确实非常方便,能够提高开发效率。想必,大家一开始接触Categ...
    subject_2619阅读 2,750评论 0 0
  • 窃国 一 南海 虽然还是三月初,宋朝最南端的州府正是凉风阴雨,冷热不定的时节,但南海上东雍城外的午后已是骄阳似火,...
    贾郝仁aguda阅读 5,323评论 3 5

友情链接更多精彩内容