iOS类型里面添加属性

来源:互联网 发布:mac图片文件夹在哪 编辑:程序博客网 时间:2024/06/06 18:38

  1、在.h里面添加属性

#import <UIKit/UIKit.h>


@interface UIViewController(UIViewExtend)  


@property (nonatomic,retain)NSString *key;


@end


2、在.m文件里面添加属性的关联

#import "UIViewController+UIViewExtend.h"

#import <objc/runtime.h>


//定义key属性的唯一标识,存取都是根据该标识处理的

static void *propertyKey = (void *)@"propertyKey";  



@implementation UIViewController(HGJExtend) 


//key属性的get方法,

//该方法根据propertyKey唯一标示取出对应的值

- (NSString *)key

{

    returnobjc_getAssociatedObject(self,propertyKey);

}


//key属性的set方法,该方法根据OBJC_ASSOCIATION_COPY_NONATOMIC定义的存放策略

//key1的值存储到propertyKey对应的内存里面

- (void)setKey:(NSString *)key1 

{

    objc_setAssociatedObject(self,propertyKey,key1,OBJC_ASSOCIATION_COPY_NONATOMIC);

}


3、OBJC_ASSOCIATION_COPY_NONATOMIC属性对应.h里面定义的nonatomic和retain字断,

按照前面属性的设置来定义该字断类型:

typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) {

    OBJC_ASSOCIATION_ASSIGN = 0,          //assign

    OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,//nonatomic, retain

    OBJC_ASSOCIATION_COPY_NONATOMIC = 3,  //nonatomic, copy

    OBJC_ASSOCIATION_RETAIN = 01401,      //retain

    OBJC_ASSOCIATION_COPY = 01403         //copy

};



4、使用

[self setKey:@"hello extend"];

[self key];



0 0
原创粉丝点击