如何在类别中添加属性
2015-07-14 15:34
393 查看
有时候我们可能需要在类中添加属性以达到某些目的
比如在UIView 中添加 NSString 属性
方法一:
方法二:
或者
比如在UIView 中添加 NSString 属性
方法一:
@interface NSObject (AssociatedObject) @property (nonatomic, strong) id associatedObject; @end
@implementation NSObject (AssociatedObject) @dynamic associatedObject; - (void)setAssociatedObject:(id)object { objc_setAssociatedObject(self, @selector(associatedObject), object, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } - (id)associatedObject { return objc_getAssociatedObject(self, @selector(associatedObject)); }
方法二:
@interface UIView (DHStyleManager) @property (nonatomic, copy) NSString* styleName; @end
#import "UIViewDHStyleManager.h" NSString * const kDHStyleKey = @"kDHStyleKey"; @implementation UIView (DHStyleManager) - (void)setStyleName:(NSString *)styleName { objc_setAssociatedObject(self, kDHStyleKey, styleName, OBJC_ASSOCIATION_COPY); } - (NSString*)styleName { return objc_getAssociatedObject(self, kDHStyleKey); } @end
或者
static char kDHStyleKey;
@interface UIView (DHStyleManager) @property (nonatomic, copy) NSString* styleName; @end
@implementation UIView (DHStyleManager)
@dynamic styleName;
- (void)setStyleName:(NSString *)styleName
{
objc_setAssociatedObject(self, &kDHStyleKey, styleName, OBJC_ASSOCIATION_COPY);
}
- (NSString*)styleName
{
return objc_getAssociatedObject(self, &kDHStyleKey);
}
@end
相关文章推荐
- php程序员需要撑握的知识点
- 练习3.21 一个数组两个站栈
- 介绍两个Eclipse插件: Implementors & Call Hierarchy
- GridhEH 选择勾CheckBox
- java的调用方法行为
- sql load的CTL文件
- Ant、Ivy入门与集成
- Android中的内存泄露和内存溢出
- Java foreach
- Node.js ORM框架:ORM2
- cocos2dx 单点触摸的简单使用
- ffmpeg使用,读取码率和写入码率的注意事项
- maven安装与配置
- 移动端 设置 小于12px 字体 初探
- GIT学习笔记
- Android截图 调用图片照片并截图,相机照相截图
- jQuery 学习笔记(三)——事件与应用
- flash builder授权问题解决
- MD5和sha1加密算法--散列加密技术 MD5:128bit的大整数
- Windows 10 十大全新特性