iOS 链式编程(Masonry)


相信大多数同学都是用过Masonry框架进行布局,他是一个UI布局约束框架;


1、首先Masonry主要用到了Block和链式编程,由于每个View都是可以通过自身实例直接调用,因此可以想到Masonry首先创建了UIView的一个分类“View+MASAdditions.h”;


2、然后创建了一个“MASConstraintMaker.h”来管理相关的约束;


3、约束调用通过

- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;

进行调用;采用了block作为参数,并且block携带了一个约束管理者参数;


4、布局调用实验使用了链式语法:

  [btn mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.right.top.equalTo(@10);

    }];


下面举一个计算的demo说明如何使用链式编程:

为了实现这样一个链式函数操作,我们创建一个基于“NSObject+Hook.h”的分类和“CalcuteManager”类


一、NSObject+Hook.h 方便其它类调用的基类扩展


#import <Foundation/Foundation.h>

#import "CalcuteManager.h"


@interface NSObject (Hook)


- (void)hk_calcute:(void(^)(CalcuteManager *manager))block;


@end


#import "NSObject+Hook.h"


@implementation NSObject (Hook)


- (void)hk_calcute:(void(^)(CalcuteManager *manager))block {

    CalcuteManager *manager = [[CalcuteManageralloc]init];

    

    block(manager);

}


二、CalcuteManager.h 计算统计类


#import <Foundation/Foundation.h>


@interface CalcuteManager : NSObject


@property(nonatomic,assign)int result;


- (CalcuteManager *(^)(int num))add;


- (CalcuteManager *(^)(int num))minus;


@end



#import "CalcuteManager.h"


@implementation CalcuteManager


- (CalcuteManager *(^)(int num))add {

    return ^(int num){

        _result += num;

         NSLog(@"add--:%d",_result);

         return self;

    };

}


- (CalcuteManager *(^)(int num))minus {

    return ^(int num) {

        _result -= num;

        NSLog(@"minus--:%d",_result);

        return self;

    };

}


@end



如上例子就简单实现了一个链式编程demo;   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值