/*
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