iOS类型里面添加属性
2016-05-17 09:43
246 查看
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];
#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];
相关文章推荐
- iOS-本地换肤思路
- 十大ios开发者喜爱的开源库 (转自博客园)
- 盘点iOS开发者必看的105个全球最佳博客
- iOS 开发类库
- iOS中Cookie介绍
- 关于iOS多线程的使用(主要是关于GCD的)
- iOS开发之--内购、GameCenter、iCloud、Passbook功能开发汇总
- IOS距离传感器
- CoreLocation Authorization in iOS8+
- iOS实现自定义的弹出视图(popView)
- iOS--KVO的实现原理与具体应用
- IOS之同步请求、异步请求、GET请求、POST请求
- iOS开发资源大全
- iOS成熟的夜间模式解决方案
- iOS远程推送原理及实现过程
- 干货——iOS本地推送与远程推送详解(一图看懂)
- GitHub 排名前 100 的安卓、iOS项目简介
- iOS开发之集成ijkplayer视频直播
- 解决block循环引用的三种方法
- iOS 公司开发者账号申请流程(转载)