IOS开发入门之iOS-链式编程
白羽 2018-11-23 来源 :网络 阅读 1023 评论 0

摘要:本文将带你了解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频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程