iOS 链式函数使用

iOS 链式函数使用


由于今天使用BabyBluetoothLib一个将系统蓝牙进行封装的轻量级库,其中用到了链式函数,因为一直使用Masonry感觉其中的链式函数用起来特别方便,可读性强,由于没有时间一直没研究怎么实现,今天正好抽空研究了一下用法.

链式函数:其实就是返回的是一个block语法块,同时block的返回值为 self 对象本身.(PS:我就是这么理解的感觉逻辑很通.).


链式函数声明 .h 中

#import <Foundation/Foundation.h>

@interface DictionaryChangeController : NSObject
/*!
 *  set Controller Name
 */
-(DictionaryChangeController *(^)(NSString * ControllerName))controllerName;
/*!
 *  set Property Dictionary
 */
-(DictionaryChangeController *(^)(NSDictionary * propertys))property;

.m 中实现

- (DictionaryChangeController* (^)(NSString*))controllerName
{
// 可以这么写 return ^(NSString *controllerName) 也没有任何错误节省时间,当然也可以这么写 
    return ^DictionaryChangeController*(NSString* controllerName)
    {
        // 这里 controllerName 就是你调用时 () 中传入的参数

        return self;
    };
}

- (DictionaryChangeController* (^)(NSDictionary*))property
{
// 原理和上一个方法是一样的不做介绍了
    return ^DictionaryChangeController*(NSDictionary* propertys)
    {

        return self;
    };
}

具体调用

第一步:我们先创建一个对象.
DictionaryChangeController * controller = [DictionaryChangeController new];

第二步:我们可以使用刚刚定义的两个链式函数了.
controller.controllerName(@"test").property(@{@"key":@"value"});

为了增加可读性我们还可以添加谓词: and . with 等等.
.h

- (DictionaryChangeController *)and;
- (DictionaryChangeController *)with;

.m

- (DictionaryChangeController*) and
{
    return self;
}

- (DictionaryChangeController*)with
{
    return self;
}

然后我们的调用函数就可以这么写:

你可以用and连接
controller.controllerName(@"test").and.property(@{@"key":@"value"});
也可以用with连接
controller.controllerName(@"test").with.property(@{@"key":@"value"});

链式函数 我比较喜欢这种写法,当然可读性强的前提是,命名一定要见名知意….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值