给category增加属性
2016-07-19 16:26
204 查看
4000
#import<Foundation/Foundation.h>
#import<objc/runtime.h>
@interfaceNSObject
(CategoryWithProperty)
/** * 要在Category中扩展的属性 */
const char *name = "property";
@property (nonatomic,strong)NSObject
*property;
@end@implementationNSObject
(CategoryWithProperty)
- (NSObject
*)property
{
return objc_getAssociatedObject(self,name);
}
- (void)setProperty:(NSObject
*)property
{
objc_setAssociatedObject(self,name,
property, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
//以上,便可以给property赋值或获得值,类似get和set方法
另外 可以使用void
objc_removeAssociatedObjects(id object)函数移除所有关联。
需要说明一点的是,关联不一定要有属性,但当属性名与关联名称相同时,关联的就是属性。
也可以理解成,重写get,set方法,但里面的实现使用运行时特性。
@end
#import<Foundation/Foundation.h>
#import<objc/runtime.h>
@interfaceNSObject
(CategoryWithProperty)
/** * 要在Category中扩展的属性 */
const char *name = "property";
@property (nonatomic,strong)NSObject
*property;
@end@implementationNSObject
(CategoryWithProperty)
- (NSObject
*)property
{
return objc_getAssociatedObject(self,name);
}
- (void)setProperty:(NSObject
*)property
{
objc_setAssociatedObject(self,name,
property, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
//以上,便可以给property赋值或获得值,类似get和set方法
另外 可以使用void
objc_removeAssociatedObjects(id object)函数移除所有关联。
需要说明一点的是,关联不一定要有属性,但当属性名与关联名称相同时,关联的就是属性。
也可以理解成,重写get,set方法,但里面的实现使用运行时特性。
@end
相关文章推荐
- Google Guava官方教程(中文版)
- Proximal Algorithms--Fixed points
- 如何访问国际英文版谷歌?Google.com
- Celery在Django下使用的内存泄漏问题
- 京城游戏人-Day5:GoKit 简单使用之移动动画
- google快捷键
- mongo模糊查询
- MongonDB学习笔记(一)查询
- CodeForces 266C Below the Diagonal
- Xcode警告Category is implementing a method which will also be implemented by its primary class 处理
- Django新手需要注意的10个要点
- NBOJv2 1050 Just Go(线段树/树状数组区间更新单点查询)
- django1.7取消syncdb后不能创建model相应表的问题
- Django入门:使用技巧【后续会一直添加】
- 基于google zxing二维码的生成,直接返回页面图片
- 【善用工具】Google的gflags
- 作DJANGO ORM时的一些最佳实践
- Unbundling Pokémon Go
- MyBatis good
- django的url()用法总结