摘要:本文将带你了解IOS开发入门iOS-链式编程,希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门iOS-链式编程,希望本文对大家学IOS有所帮助。
链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)
链式编程特点:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)
代表:masonry框架。
BabyBluetooth
Masonry中的链式可能相对比较零散,并不能体现出链式的任务逻辑连贯性。
下面介绍另外一个优秀的第三方框架BabyBluetooth,BabyBluetooh是简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和mac osx。
CoreBluetooth所有方法都是通过委托完成,代码冗余且顺序凌乱。BabyBluetooth使用block方法,可以重新按照功能和顺序组织代码,并使用链式编程将一组任务用一条链完成。
baby.having(self.currPeripheral).and.channel(channelOnPeropheralView).then.connectToPeripherals().discoverServices().discoverCharacteristics().readValueForCharacteristic().discoverDescriptorsForCharacteristic().readValueForDescriptors().begin();
用一条链就完成了一整套的连接peripheral,发现服务,发现特性,读取特性值,发现描述,读取描述值的任务链,而不需要多次的分散调用,流程逻辑非常清晰。
下面用链式编程思想写一个Demo
以分类形式进行计算操作
.h
#import <foundation foundation.h="">
@class CalculateManager;
@interface NSObject (Calculate)
+(NSInteger)xw_makeCalculate:(void(^)(CalculateManager *))block;
@end</foundation>
.m
#import "NSObject+Calculate.h"
#import "CalculateManager.h"
@implementation NSObject (Calculate)
+(NSInteger)xw_makeCalculate:(void(^)(CalculateManager *))block{
CalculateManager *mgr = [[CalculateManager alloc] init];
block(mgr);
return mgr.result;
}
@end
自定义计算类,使所有方法用block代码块形式表示
.h
#import <foundation foundation.h="">
@interface CalculateManager : NSObject
@property (nonatomic, assign) NSInteger result;
-(CalculateManager *(^)(NSInteger))add;
-(CalculateManager *(^)(NSInteger))subtract;
-(CalculateManager *(^)(NSInteger))mult;
-(CalculateManager *(^)(NSInteger))pision;
@end
</foundation>
.m
#import "CalculateManager.h"
@implementation CalculateManager
-(CalculateManager *(^)(NSInteger))add{
return ^(NSInteger value){
_result += (value);
return self;
};
}
-(CalculateManager *(^)(NSInteger))subtract{
return ^(NSInteger value){
_result -= (value);
return self;
};
}
-(CalculateManager *(^)(NSInteger))mult{
return ^(NSInteger value){
_result *= (value);
return self;
};
}
-(CalculateManager *(^)(NSInteger))pision{
return ^(NSInteger value){
_result /= (value);
return self;
};
}
@end
在使用链式编程思想调用对象方法就可以这样操作:
-(void)calculate{
NSInteger result = [NSObject xw_makeCalculate:^(CalculateManager * mgr) {
mgr.add(100).add(200).pision(2).mult(3).subtract(50).add(121);
}];
NSLog(@"result: %zd",result);
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号