美文网首页iOS分享之路-快速开发电商平台工具程序员
【iOS分享之路-快速上手Runtime】四、给分类添加属性

【iOS分享之路-快速上手Runtime】四、给分类添加属性

作者: 全栈攻城狮DWQ | 来源:发表于2017-03-18 14:53 被阅读3876次
DWQ-LOGO.jpeg

引述

作为iOS开发者的我们都知道,分类是不能直接添加属性的,那么我们有时候又需要实现这个功能,那么我们应该怎么办才能为分类添加上属性呢。

Runtime给分类添加属性原理

给一个类声明属性,其实本质就是给这个类添加关联,并不是直接把这个值的内存空间添加到类存空间。

Runtime给分类添加属性步骤

  • 1.在分类的.h文件中声明想要定义的属性

  • 2.在分类的.m文件中实现getter和setter方法

  • 3.引入runtime头文件,然后在setter方法中用objc_setAssociatedObject关联对象

  objc_setAssociatedObject(self, @"age", age, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

参数说明:

// object:给哪个对象添加属性
// key:属性名,根据key去获取关联的对象 ,void * == id
// value:关联的值
// policy:策略
  • 4.在getter方法中根据关联的key,获取关联的值。
 return objc_getAssociatedObject(self, @"age");

  • 5.在需要使用的地方引入分类的头文件,然后即可用 .语法来获取值。
 NSObject *objc = [[NSObject alloc] init];
    objc.age = @"123";
    NSLog(@"%@",objc.age);

效果展示:

添加属性.png

Demo下载地址

Runtime添加属性Demo
广大书友记得给个好评,在GitHub上给个Star噢!

相关文章

网友评论

  • MemoryReload:用动态原理,解决静态问题,呵呵……用运行时添加属性,根本就不分什么分类,原类、类扩展、分类都已经加载到一个原类对象里了。类的这三种接口实现都可以用运行时添加属性。

本文标题:【iOS分享之路-快速上手Runtime】四、给分类添加属性

本文链接:https://www.haomeiwen.com/subject/hqiunttx.html