美文网首页
iOS 编程思想

iOS 编程思想

作者: Nothing_xy | 来源:发表于2020-12-21 16:13 被阅读0次

7.8 编程思想

链式编程

特点

  • 是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)
  • 方法的返回值是block,block必须有返回值(对象本身),block参数(需要操作的值)
  • 示例
@class Calculator;
typedef Calculator * (^addBlock)(int);
typedef Calculator * (^subBlock)(int);
typedef Calculator * (^mulBlock)(int);
typedef Calculator * (^diviBlock)(int);
@interface Calculator : NSObject

- (addBlock)add;
- (subBlock)sub;
- (mulBlock)mul;
- (diviBlock)divi;

@interface Calculator()
@property (assign , nonatomic)int currNum;
@end
@implementation Calculator
- (addBlock)add
{
    return ^(int a){
        self.currNum += a;
        NSLog(@"result=%d",self.currNum);
        return self;
    };
}
- (subBlock)sub{
    return ^(int a){
        self.currNum -= a;
        NSLog(@"result=%d",self.currNum);
       return self;
    };
}
- (mulBlock)mul{
    return ^(int a){
        self.currNum *= a;
        NSLog(@"result=%d",self.currNum);
        return self;
    };
}
- (diviBlock)divi{
    return ^(int a){
        self.currNum /= a;
        NSLog(@"result=%d",self.currNum);
       return self;
    };
}

  Calculator * ca = [[Calculator alloc] init];
    ca.add(10).sub(1).mul(9).divi(9);
@end

函数编程

特点

  • 函数式编程思想:是把操作尽量写成一系列嵌套的函数或者方法调用。
    • 函数式编程特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
    • 代表:ReactiveCocoa。
    • 用函数式编程实现,写一个加法计算器,并且加法计算器自带判断是否等于某个值.
    • 示例
      #import
      
      @class CaculatorMaker;
      
      @interface NSObject (CaculatorMaker)
      
      
      
      //计算
      
      + (int)makeCaculators:(void(^)(CaculatorMaker *make))caculatorMaker;
      
      @end
      
      #import "NSObject+CaculatorMaker.h"
      
      #import "CaculatorMaker.h"
      
      
      
      @implementation NSObject (CaculatorMaker)
      
      
      
      //计算
      
      + (int)makeCaculators:(void(^)(CaculatorMaker *make))block
      
      {
      
          CaculatorMaker *mgr = [[CaculatorMaker alloc] init];
      
          block(mgr);
      
          return mgr.iResult;
      
      }
      
      @end
      
      
      @interface CaculatorMaker : NSObject
      
      @property (nonatomic, assign) int iResult;
      
      //加法
      
      - (CaculatorMaker *(^)(int))add;
      
      
      
      //减法
      
      - (CaculatorMaker *(^)(int))sub;
      
      
      
      //乘法
      
      - (CaculatorMaker *(^)(int))muilt;
      
      
      
      //除法
      
      - (CaculatorMaker *(^)(int))divide;
      
      @end
      
        
      #import "CaculatorMaker.h"
      @implementation CaculatorMaker
      
      
      
      - (CaculatorMaker *(^)(int))add
      
      {
      
         return ^(int value)
      
          {
      
              _iResult += value;
      
              return self;
      
          };
      
      }
      
      @end
        
      //调用
        int iResult = [NSObject makeCaculators:^(CaculatorMaker *make) {
      
           make.add(1).add(2).add(3).divide(2);
      
         }];
      

响应式编程

特点

  • 响应式编程思想:不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生了一个事件,会影响很多东西,这些事件就像流一样传播出去,然后影响结果,借用面向对象的一句话,万物皆是流,
  • 代表:KVO

相关文章

  • RAC学习详解

    Block开发基础知识 链式编程思想简介 响应式编程思想简介 函数式编程思想简介 参考资料 iOS 关于MVC和M...

  • 工作iOS技术总结

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

  • iOS 编程思想

    7.8 编程思想 链式编程 特点 是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a...

  • APP基数语法

    工欲善其事必先利其器,在做iOS开发前要了解iOS的编程语言和基础语法,了解iOS的编程思想和相关语法基础,这样才...

  • iOS开发Masonry框架源码解析

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

  • IOS 链式编程思想

    在开发中我们经常使用到,第三方框架,他们可以用点语法来实现函数不断的调用,现在我们来实现一下基本的原理首先在OC中...

  • 浅谈iOS编程思想

    编程思想的目的是写出可维护性高,扩展性高的代码,本质是降低系统复杂度,减少重复,减少代码的变更。 面向对象编程:一...

  • IOS_编程思想_链式编程练习

    在之前的两篇文章中已经简单的介绍了IOS的编程思想,那在此处写一个链式编程的联系来加深对链式编程思想的理解!!! ...

  • iOS RAC学习

    一、RAC使用基础认知 RAC编程思想:响应式编程+函数式编程 在iOS中,类之间的传值,无非就是block、de...

  • iOS__链式编程思想|函数式编程思想

    1.链式编程思想:方法的返回值是block必须有返回值(本身对象),block参数(需要操作的值) #import...

网友评论

      本文标题:iOS 编程思想

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