您的位置:首页 > 编程语言 > Go语言

关于Category中增加属性的问题

2016-02-29 14:14 543 查看
Category是Objective-C中常用的语法特性,通过它可以很方便的为已有的类来添加函数。但是Category不允许为已有的类添加新的属性或者成员变量。     

一种常见的办法是通过runtime.h中objc_getAssociatedObject / objc_setAssociatedObject来访问和生成关联对象。通过这种方法来模拟生成属性。

下面是用来制作下拉刷新框架中使用到的一段代码

@interface UIScrollView (CWRefresh)@property (nonatomic,strong) CWRefreshHeaderView *header;@end

上面是声明,下面是头文件的生成

#import "UIScrollView+CWRefresh.h"#import "CWRefreshHeaderView.h"#import <objc/runtime.h>@implementation UIScrollView (CWRefresh)
#pragma mark - header// 关联static char CWRefreshHeaderKey;- (void)setHeader:(CWRefreshHeaderView *)header{    if (header != self.header) {        [self.header removeFromSuperview];                [self willChangeValueForKey:@"header"];        objc_setAssociatedObject(self, &CWRefreshHeaderKey,                                 header,                                 OBJC_ASSOCIATION_ASSIGN);        [self didChangeValueForKey:@"header"];                [self addSubview:header];    }}
- (CWRefreshHeaderView *)header{    return objc_getAssociatedObject(self, &CWRefreshHeaderKey);}
@end

这样就可以把header当成属性来使用啦。。可以在header上添加各种刷新时候的控件,以及动画啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: