block使用方法

作者: LPL_d5fc | 来源:发表于2019-12-11 20:56 被阅读0次

block基本使用

没有参数,=左边的()里面要写上void。

作为方法的参数传递使用

怎么区分参数是block?就看有没有^,只要有^,就是把block当作参数

把block当作参数,并不是马上就调用block,什么时候调用,由方法内部决定

什么时候需要吧block当作参数去使用?做的事情由外界决定,但是什么时候做由内部决定

现在有一个需求:封装一个计算器,提供一个计算方法,怎么计算由外界决定,什么时候计算由内部决定

1.创建一个计算机类,创建属性,方法

2.方法实现

3.调用方法,传参

看起来有一些费解。最终理解调用顺序为,在图三中调用计算方法,在参数block块中写计算代码,将作为参数的block传给图二中,在图二中调用作为参数传过去的block方法,并将属性_result作为参数传入,回到图三中执行算法,得出结果之后返回给图二中的result,计算完成。

作为方法返回值使用

链式编程思想:把所有的语句用.号连接起来。好处就是可读性非常好。

普通的方法调用[对象  方法]; 如果有连续操作就要分几步写,可读性差一些。就像Masonry框架中的方法用法就简洁明了:make.center.equalTo(ws.view);

使用连续的.调用,简洁易懂。这就是应用了将block作为方法返回值的方法。连续使用.语法调用方法,就是连续调用get方法,.调用了一个方法之后,想要继续在后面使用.调用,就要先接收到一个返回的对象,然后才可以继续.调用下去。到最后的equalTo();方法,显然就是调用了block方法,因为oc中没有其他这样调用方法的形式。

那么为什么可以这么调用(.equalTo())方法呢,原因就是方法的返回值是block类型,所以可以.调用block方法。下面做一个小例子。

需求:封装一个计算器,提供一个加号方法。可以连续.调用。

1.在这里声明一个计算方法caculator,他的返回值是返回一个block,而这个block的参数是int类型,返回值是Caculator类型。

方法定义

2.方法实现,返回一个block,block参数为int类型,用于接收外界的传入参数。然后在block块中返回self(Caculator类型),这样就可以持续.调用计算方法了。

方法实现

3.使用方法计算!

方法调用

相关文章

网友评论

    本文标题:block使用方法

    本文链接:https://www.haomeiwen.com/subject/lzpagctx.html