美文网首页
iOS 封装一个链式编程的应用框架

iOS 封装一个链式编程的应用框架

作者: Onlyoner | 来源:发表于2017-06-19 19:44 被阅读0次

写一个能够实现连加(乘除减类似)

 n.add(10).add(20).add(30);
 n = 60;

首先写一个NSObject的分类,便于所有类都可调用:
通过分析Masonry

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

我们可以定义此方法为:

+ (int)rr_makeConstraints:(void(^)(SumManager *manager))block;
SumManager就相当于MASConstraintMaker中的约束制造者
在这里担任加法管理者

SumManager.h

#import <Foundation/Foundation.h>

@interface SumManager : NSObject

/**  */
@property (nonatomic,assign) int result;

- (SumManager * (^)(int value))add;

@end

SumManager.m

#import "SumManager.h"

@implementation SumManager

- (SumManager * (^)(int value))add{

    return ^(int value){
    
        _result += value;
        
        return self;
        //返回一个“方法调用者”
    };
    
}

@end

NSObject+Sum.h

#import <Foundation/Foundation.h>
#import "SumManager.h"
@interface NSObject (Sum)

+ (int)rr_makeConstraints:(void(^)(SumManager *manager))block;

@end

NSObject+Sum.m

#import "NSObject+Sum.h"

@implementation NSObject (Sum)

+ (int)rr_makeConstraints:(void(^)(SumManager *manager))block{

    SumManager *mgr = [[SumManager alloc] init];
    
    block(mgr);
    
    return mgr.result;
    
}

@end

正式使用:ViewController.m


#import "ViewController.h"
#import "NSObject+Sum.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    int sum = [NSObject rr_makeConstraints:^(SumManager *manager) {
        
        manager.add(10).add(20).add(30);
        
    }];
    
    NSLog(@"sum == %d",sum);
    
    
}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

输出结果:

2017-06-19 16:44:46.000 002-链式编程思想[3006:1593180] sum == 60

相关文章

  • iOS 封装一个链式编程的应用框架

    写一个能够实现连加(乘除减类似) 首先写一个NSObject的分类,便于所有类都可调用:通过分析Masonry 我...

  • iOS开发Masonry框架源码解析

    iOS开发Masonry框架源码解析 前言:这个框架编程思想主要包括链式编程 这是一个iOS在控件布局中的轻量级框...

  • iOS-链式编程思想

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...

  • iOS链式编程

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...

  • ELKChainedAlloy基于OC的链式编程框架

    基于Object-C的链式编程框架源码及 cocoapods 库在这里:ELKChainedAlloy链式编程框架...

  • 工作iOS技术总结

    链式编程、函数式、面向接口编程思想 iOS 之ReactiveCocoa 链式编程2 WKWebView的缓存处理...

  • Masonry 学习笔记

    一个轻量级的布局框架, 同时支持 iOS 和 Mac OS X, 采用更优雅的链式语法封装自动布局,语法优雅, 帮...

  • iOS 链式编程

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

  • [iOS开发]方法的封装之链式编程

    面向对象的语言有三个特点,封装 继承 多态,这会说的链式编程是基于封装这一特点的延伸 Masonry是iOS开发中...

  • ReactiveObjC入门

    ReactiveObjC基础用法 iOS开发三种编程方式(响应式编程、函数编程、链式编程),函数编程最常用,链式编...

网友评论

      本文标题:iOS 封装一个链式编程的应用框架

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