为一个类动态的添加属性

/*

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

 

posted @ 2016-08-31 11:21  sujianbo  阅读(696)  评论(0编辑  收藏  举报