首页 > 代码库 > 快速上手Runtime(二)之给分类添加属性
快速上手Runtime(二)之给分类添加属性
我们都知道,分类是不能直接添加属性的,那么我们有时候又需要实现这个功能,那么我们应该怎么办才能为分类添加上属性呢。
Runtime给分类添加属性原理
给一个类声明属性,其实本质就是给这个类添加关联,并不是直接把这个值的内存空间添加到类存空间。
Runtime给分类添加属性步骤
1.在分类的.h文件中声明想要定义的属性
2.在分类的.m文件中实现getter和setter方法
3.引入runtime头文件,然后在setter方法中用objc_setAssociatedObject关联对象
比如给NSObject建一个分类,分类里面添加一个name 属性:
#import <Foundation/Foundation.h> @interface NSObject (Name) @property (nonatomic,copy)NSString *name; @end #import "NSObject+Name.h" #import <objc/runtime.h> static void *kName = &kName; @implementation NSObject (Name) -(void)setName:(NSString *)name { // object:给哪个对象添加属性 // key:属性名,根据key去获取关联的对象 ,void * == id // value:关联的值 // policy:策略 objc_setAssociatedObject(self, kName, name, OBJC_ASSOCIATION_COPY_NONATOMIC); } - (NSString *)name { return objc_getAssociatedObject(self, kName); } @end
实例效果:
Demo地址:https://github.com/domanc/NSObject_Category.git
快速上手Runtime(二)之给分类添加属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。