iOS 链式编程

链式编程是OC中一种很好的设计模式。框架中使用链式编程,会让框架使用者感觉写的代码更加美观简洁。

链式编程的效果

UIEdgeInsets padding=UIEdgeInsetsMake(10,10,10,10);

[view1 mas_makeConstraints:^(MASConstraintMaker*make){make.edges.equalTo(superview).with.insets(padding);}];

链式编程de关键语法

链式编程使用的两个关键且常用的语法:点语法、block。

点语法

可作用于属性,也可作用于无参的方法。

block

使用block作为方法返回值,即调用该方法则可以返回一个block。

block可以定义任意类型的参数,也可定义返回值。

block的返回值类型是所在方法所属的类型(值不一定是self)。

关于block最好不要作为属性存在,随时爆发循环引用。或者你遇到block就使用weakSelf吧

使用链式编程de SegmentBar

估计大家都封装过一个 SegmentBar:segmentBar简单示例code。

不使用链式编程de效果

这里如果想再次更改 config,则需要将config暴露出去。

// 主要代码@interfaceLWSegmentBarConfig:NSObject

@property(nonatomic,strong)UIColor*itemNormalColor;

@property(nonatomic,strong)UIColor*itemSelectColor;@end

// 使用演示

LWSegmentBarConfig*config=[LWSegmentBarConfig new];

config.itemNormalColor=[UIColor lightGrayColor];

config.itemSelectColor=[UIColor blueColor];...属性很多

LWSegmentBar*bar=[LWSegmentBar segmentBarWithFrame:CGRectMake(0,0,self.view.frame.size.width,64)segmentBarConfig:config];

使用链式编程de效果

// 主要代码@interfaceLWSegmentBarConfig:NSObject

-(LWSegmentBarConfig*(^)(UIColor*color))lw_itemNormalColor;-(LWSegmentBarConfig*(^)(UIColor*color))lw_itemSelectColor;

@end

@implementationLWSegmentBarConfig

-(LWSegmentBarConfig*(^)(UIColor*color))lw_itemNormalColor{return^(UIColor*color){self.itemNormalColor=color;returnself;};}

-(LWSegmentBarConfig*(^)(UIColor*color))lw_itemSelectColor{return^(UIColor*color){self.itemSelectColor=color;returnself;};}

@end

// 使用演示LWSegmentBar*bar=[XMGSegmentBar segmentBarWithFrame:CGRectMake(0,0,self.view.frame.size.width,64)];

[bar lw_updateConfig:^(LWSegmentBarConfig*config){config.lw_itemNormalColor([UIColor lightGrayColor]).lw_itemSelectColor([UIColor blueColor]);}];

你可能感兴趣的:(iOS 链式编程)