美文网首页
Objective-C 链式调用

Objective-C 链式调用

作者: yue_kyy | 来源:发表于2019-07-25 18:13 被阅读0次

OC 方法的调用都是通过 [] 实现的,如果想要连续调用就要进行多层嵌套,我们可以利用 block 的来实现 Objective-C 方法的链式调用。像这种用于特定领域的表达方式,我们叫做 DSL (Domain Specific Language)。

关于 block 的用法

1、函数式编程

把 block 当做函数的参数,可以把逻辑和函数放在调用时候的 block 里面,而不是方法内部。把相关的逻辑都放在一起,提高了开发效率和程序的可读性。这其实就是函数式编程思想。函数式编程在很多的第三方框架中都有明显的提现,比如 AFNetWorking、Masonry 等。

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {

           make.edges.equalTo(superview).with.insets(padding);

}];

2、链式调用

外面的 block 就是函数式编程的一个体现,在 block 内部并不像常规的 OC 语言,而是不断的使用点语法调用,极大的精简了代码量,同时也拥有很好的可读性,使用方便,这种方式就叫做链式调用。

链式调用是怎么实现的呢?

* 后面带括号,说明方法的返回值是一个 block;

* 调用方法肯定是对象才可以调用,说明 block 的返回值是一个对象;

* 点语法说明这个方法没有参数;

结合以上三点,一个没有参数 & 有返回值 & 返回值是 block & block 的返回值是方法的调用者,就可以实现链式调用。

示例

调用方法:

testBtn.YTitle(@"测试", UIControlStateNormal).YTitleColor([UIColor blueColor], UIControlStateNormal).YFrame(CGRectMake(100, 300, 100, 50)).YBackgroundColor([UIColor yellowColor]).YAddToView(self.view);

本文 demo:https://github.com/yuetianlu/UIBaseDSL.git,给常用的系统原生 UI 控件扩展了链式调用用法。

参考文章:

https://www.jianshu.com/p/b74598269140

相关文章

  • Objective-C 链式调用示例

    Objective-C 链式调用 .链式调用的特点:方法的返回值是block,block的返回值类型必须是类本身类...

  • 从函数调用到函数式编程

    Objective-C版本 简单的block调用2016-06-03_17:14:04.jpg 链式调用循序渐进的...

  • Objective-C 链式调用

    OC 方法的调用都是通过 [] 实现的,如果想要连续调用就要进行多层嵌套,我们可以利用 block 的来实现 Ob...

  • Objective-C实现链式编程语法(DSL)

    Objective-C实现链式编程语法(DSL) Objective-C实现链式编程语法(DSL)

  • Objective-C 实现链式调用

    链式调用也是所谓的链式编程,是在Masonry中写法看起来十分直观,调用起来也很简单。在特定的应用环境下利用blo...

  • Objective-C 实现链式调用

    链式调用也是所谓的链式编程,在Masonry中写法看起来十分直观,调用起来也很简单。在特定的应用环境下利用bloc...

  • swift重温笔记(可选链式调用)

    使用可选链式调用代替强制展开 为可选链式调用定义模型类 通过可选链式调用访问属性 通过可选链式调用调用方法 通过可...

  • 你一定不知道的链式调用新姿势

    如何链式调用Java静态方法? 链式调用 首先需要提一下最近几年在开发界大的链式调用,链式调用非常利于编写,更利于...

  • 你一定不知道的Java链式调用新姿势

    链式调用 首先需要提一下最近几年在开发界大的链式调用,链式调用非常利于编写,更利于阅读,那么,什么是链式调用呢,为...

  • 链式调用原理

    常规写法: 链式调用: 实现原理: 调用方法之后返回自己,以实现链式调用 具体代码:

网友评论

      本文标题:Objective-C 链式调用

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