首页 > 其他 > 详细

为一个类动态的添加属性

时间:2016-08-31 11:49:11      阅读:167      评论:0      收藏:0      [点我收藏+]

/*

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

 

为一个类动态的添加属性

原文:http://www.cnblogs.com/jianbo-su/p/5825166.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!