OC的运行时关联,可以类似于为分类添加属性.

来源:互联网 发布:淘宝图片添加热区 编辑:程序博客网 时间:2024/06/18 03:38


实现的功能:为分类添加属性(看上去像),实现完全不用在控制器上初始化,而只需要调用方法就好了.




@interface UIView (Annimation)@property(nonatomic,strong)AnimationIndicator *indicator;//这不是真实的属性,只是为了生成get和set方法@end@implementation UIView (Animation)#pragma mark - 运行时相关static char AnimationKey;- (void)setIndicator:(AnimationIndicator *)indicator {    objc_setAssociatedObject(self, &AnimationKey,                             indicator,                             OBJC_ASSOCIATION_RETAIN);//参数:绑定到的对象,一个key(就这样,也不用赋值),被绑定的对象,绑定的策略}- (AnimationIndicator *)indicator {    return objc_getAssociatedObject(self, &AnimationKey);//根据key返回绑定的值}
上面的两步就为分类建立了实在的属性,

如果我在添上如下的代码,

-(void)addAnimation{   if(!self.indicator){      self.indicator=[[alloc]init];    }    [self addsubview:self.indicator];   [self.indicator starAnimation]}


这样只需要调用一行代码我们的控制器中就会有一个,在这个分类中实现了的加载动画出现了.
0 0
原创粉丝点击