美文网首页
OC中的链式编程

OC中的链式编程

作者: 晨曦中的花豹 | 来源:发表于2021-10-28 17:23 被阅读0次

今天看到项目里边有一段代码

[BAFRequest request].setBaseURL(host).setPath(path).setRequestSerializerType(RequestHTTP).setRequestType(BAFRequestTypeAPI).setMethod(MethodType).setParams(finalParams)

- (BAFRequest *(^)(NSString *baseURL))setBaseURL;

第一眼看上去感觉有点蒙,返回的是一个block,为什么可以直接去请求下一个方法呢?
其实细心地朋友已经发现了,Masonry的布局使用的就是这种编程方式,执行完一个方法后回把当前的对象返回,然后继续执行下一个方法.
其实静下心来仔细想一下,这里就非常巧妙地使用了block:
比如我们在.h中写了一个方法

- (void)set_name;

这个方法是可以通过.语法执行的


截屏2021-10-28 下午3.48.51.png

这个实际上就像是个getter,是获取值的过程,比如我们设置了一个name属性,我们可以通过.name获取到name的值.

这里我们明白了一个方法,直接通过.语法调用是获取值得过程,那接下来如果我们的返回值是个block,那个获取到的就是一个block喽

-(Person *(^)(NSString *name))set_name;

-(Person *(^)(NSString *name))set_name {
    return ^Person*(NSString *name) {
        return [[Person alloc] init];
    };
}
截屏2021-10-28 下午4.00.40.png

其实到这里应该差不多明白了,

如果这个block有返回值,我们获取到block,去执行block,是不是就可以得到这个block的返回值呢.

WeChatdafcd2a352969852ab439dcc3a3bfc07.png

到这里基本的链式编程的步骤就完成了,然后具体这个block做什么就看你自己的需要了,这里我的是简单的存储,然后把self返回

- (Person *(^)(NSString *name))setName {
    return ^Person*(NSString *name) {
        self.s_name = name;
        return self;
    };
}
- (Person *(^)(int age))setAge {
    return ^Person*(int age) {
        self.s_age = age;
        return self;
    };
}

然后就可以开开心心的链起来了

person.setName(@"小明").setAge(12);
NSLog(@"姓名: %@, 年龄: %d ,set_name: %@",person.s_name,person.s_age,person.set_name);


2021-10-28 16:17:50.192916+0800 test_oc[26267:2412081] 姓名: 小明, 年龄: 12 ,set_name: <__NSGlobalBlock__: 0x104dc00a8>

这个理解起来可能不是很好理解,是因为我们平时使用block大部分都是我们自己写block,模块内部去调用,正好跟这个思想是反过来的,所以上来第一眼看到有点蒙是很正常的,间的次数多了就会舒服了

相关文章

  • OC中的链式编程

    今天看到项目里边有一段代码 第一眼看上去感觉有点蒙,返回的是一个block,为什么可以直接去请求下一个方法呢?其实...

  • iOS链式语法深入实践

    要点 什么是链式语法 OC中的RAC、Masonry、SnapKit等链式编程的典型,大家应该都熟悉了Masonr...

  • 像swift一样书写OC代码OC链式编程实践

    链式编程特点 链式编程 = 点语法 事物 串联 同样的hello word代码 OC和swift调用函数时候最大的...

  • iOS 链式编程

    链式编程是OC中一种很好的设计模式。框架中使用链式编程,会让框架使用者感觉写的代码更加美观简洁。 链式编程的效果 ...

  • OC 链式编程

    _ config.h _ View Example 既然已经决定,就勇敢的去吧。 决定吧

  • OC:链式编程

    概念: 链式编程:将多个业务逻辑(方法)通过“.”(点号)串联起来的一种代码风格,形似链条,故称链式编程。核心思想...

  • OC链式编程的一个实践

    所谓链式编程,基本都是调用一个方法的时候返回对象本身,然后可以继续调用方法。以OC为例: 不过OC使用中括号调用方...

  • OC中链式编程和函数式编程

    最近看到了链式编程和函数式编程这两个概念,这两天不是那么的忙 所以也研究了下这两个概念;在查询链式编程和函数式编程...

  • OC-链式编程

    原理:用block作为返回值实现的链式 优点通过点语法直接调用 缺点虽然点语法调出方法,但是()和括号内的值需要手...

  • OC中的函数式编程&链式编程

    在正常的开发中我们用到的第三方框架就有一个很好的体现了函数式编程和链式编程----Masonry。例如:Mason...

网友评论

      本文标题:OC中的链式编程

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