ios链式编程

        首先我们看一下使用Masonry对控件进行布局的代码格式。

[self.bottomView1 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(20);
        make.width.mas_equalTo(30);
        make.bottom.mas_equalTo(-20);
        make.height.mas_equalTo(40);
    }];

        上边这段代码有特点

  1. 使用点语法
  2. 可以进行链式调用

那么实现链式编程就需要解决上边两个问题。

一、点语法

1、使用无参无返回值block

/*
* Function.h
*/
#import <Foundation/Foundation.h>

@class Function1;
typedef void(^mBlock)();
@interface Function1 : NSObject

- (mBlock)function;

@end

/*
* Function.m
*/
#import "Function1.h"

@implementation Function1

- (mBlock)function{
    return ^{
        NSLog(@"无参无返回值block!");
    };
}

@end

/*
* 调用
*/
- (void)viewDidLoad {
    [super viewDidLoad];
    Function1 *fun1 = [Function1 new];
    fun1.function();
}

使用这种方式就可以做到点语法调用方法。但是我们可以发现这种写法无法传入参数。接下来我们继续解决这个问题。

2、使用有参无返回值block

/*
* Function2.h
*/
#import <Foundation/Foundation.h>

@class Function2;
typedef void(^mBlock1)(NSString *str);

@interface Function2 : NSObject

- (mBlock1)function;

@end

/*
* Function.m
*/
#import "Function2.h"

@implementation Function2

- (mBlock1)function{
    return ^(NSString *str){
        NSLog(@"我想:%@", str);
    };
}

@end

/*
* 调用
*/
- (void)viewDidLoad {
    [super viewDidLoad];
    Function2 *fun2 = [Function2 new];
    fun2.function(@"吃饭");
}

通过给block加入参数,这样在使用点语法调用方法时返回一个block,通过给block加入参数即可达到目的。接下来就剩下最后一个问题:如何实现链式调用。

使用有参有返回值的block

/*
* Function.h
*/
#import <Foundation/Foundation.h>

@class Function3;
typedef Function3 *(^mBlock2)(NSString *str);
@interface Function3 : NSObject

- (mBlock2)function;

@end

/*
* Function.m
*/
#import "Function3.h"

@implementation Function3

- (mBlock2)function{
    return ^Function3 *(NSString *str){
        NSLog(@"我想:%@", str);
        return self;
    };
}

@end

/*
* 调用
*/
- (void)viewDidLoad {
    [super viewDidLoad];
    Function3 *fun3 = [Function3 new];
    fun3.function(@"吃饭").function(@"喝水").function(@"睡觉");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值