为category添加属性和成员变量
2015-04-18 19:52
441 查看
Category可以在不改变类结构的情况下为已有的类添加方法,但是Category不运行添加属性和成员方法,这可以用<objc/runtime.h>中的 objc_setAssociatedObject(id
object, const void *key,id value,
objc_AssociationPolicy policy)和id objc_getAssociatedObject(id
object,constvoid
*key)方法进行对象关联,从而可以通过Category为已有类添加属性和成员变量。
下面通过一个简单的例子来演示怎么通过关联对象来为Category添加属性和成员变量
UIViewController+CustomCategory.h
UIViewController+CustomCategory.m
通过这样UIViewController就会有identifer的属性了。
object, const void *key,id value,
objc_AssociationPolicy policy)和id objc_getAssociatedObject(id
object,constvoid
*key)方法进行对象关联,从而可以通过Category为已有类添加属性和成员变量。
下面通过一个简单的例子来演示怎么通过关联对象来为Category添加属性和成员变量
UIViewController+CustomCategory.h
@interface UIViewController (CustomCategory) @property (nonatomic, strong) NSString *identifer; @end
UIViewController+CustomCategory.m
#import "UIViewController+CustomCategory.h" #import <objc/runtime.h> static void *identifierKey = @"identiferKey"; @implementation UIViewController (CustomCategory) - (void)setIdentifer:(NSString *)identifer { objc_setAssociatedObject(self, identifierKey, identifer, OBJC_ASSOCIATION_COPY_NONATOMIC); } - (NSString *)identifer { return objc_getAssociatedObject(self, identifierKey); } @end
通过这样UIViewController就会有identifer的属性了。
相关文章推荐
- Category添加属性与成员变量
- iOS类别(category)不能添加成员变量但是可以添加属性的问题
- 59.通过 runtime为Category添加属性与成员变量
- iOS Category中添加属性和成员变量的区别
- 让Category支持添加属性与成员变量
- 日常笔记之一 -- 让Category支持添加属性与成员变量
- 让Category支持添加属性与成员变量【转载】
- 关于iOS Category实现添加属性及成员变量
- 让Category支持添加属性与成员变量
- Category支持添加属性与成员变量
- 让Category支持添加属性与成员变量
- 让Category支持添加属性与成员变量
- 【原】iOS动态性(一):动态添加属性的方法——关联(e.g. 向Category添加成员变量)
- 让Category支持添加属性与成员变量【转载】
- 让Category支持添加属性与成员变量
- iOS中动态添加属性的方法——关联(e.g. 向Category添加成员变量)
- 让Category支持添加属性与成员变量
- ios类别(category)不能添加成员变量但是可以添加属性的问题
- iOS Category中添加属性和成员变量的区别 评论也值得思考
- category添加成员变量