为一个类动态的添加属性

Posted jianbo_iOS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为一个类动态的添加属性相关的知识,希望对你有一定的参考价值。

/*

1不想集成一个类添加属性,想动态的添加一个属性

*/

 

||解决步骤

1.新建一个分类,导入

#import <objc/runtime.h>

 

2.添加属性(添加的属性,只是做了声明,并没有帮我们生成set,get方法)

 

3.手动添加set,get方法

{1.在set方法中实现

/*

 *@object 为那个对象添加属性

*@key  添加一个对应的key  c语言类型的

*@value  对应的值

*@objc_AssociationPolicy  策略

*/

objc_setAssociatedObject(<#id object#>, <#const void *key#>, <#id value#>, <#objc_AssociationPolicy policy#>)

 

1.在get方法中实现

/*

 *@object 获取那个对对象的值(self)

*@key  添加一个对应的key  c语言类型的

*/

objc_getAssociatedObject(<#id object#>, <#const void *key#>)

}

 

/*******************实例**********************/

#import <Foundation/Foundation.h>

 

@interface NSString (Exteension)

 

@property (nonatomic,copy)NSString * name;

 

@end

 

#import "NSString+Exteension.h"

#import <objc/runtime.h>

 

/*为一个类动态添加属性*/

 

static char * nameKey = "nameKey";

 

@implementation NSString (Exteension)

 

- (void)setName:(NSString *)name

{

    objc_setAssociatedObject(self, nameKey, name, OBJC_ASSOCIATION_COPY_NONATOMIC);

    }

 

- (NSString *)name

{

    return objc_getAssociatedObject(self, nameKey);

    

}

@end

 

以上是关于为一个类动态的添加属性的主要内容,如果未能解决你的问题,请参考以下文章

根据布尔属性动态添加/删除一个类

Yii2:如何为模型类动态添加验证规则?

20属性和动态特性

python类对象动态添加属性和方法

使用 groovy 类别添加动态属性

分类为啥不能添加成员变量