• 实战开发之编程思想


    实际开发中我们会使用很多的三方框架,这极大的提高了我们的开发效率。但是我们的代码就会与三方产生很强的依赖(耦合性很高!!)我们会使用三方框架会做一些代码的隔离来解耦合。我们不能太依赖于某个框架,否则这个框架不更新了,导致项目后期没办法维护,比如之前Facebook提供的Three20框架,在当时也是神器,但是后来不更新了,也就没什么人用了。因此我感觉学习一个框架,非常有必要了解它的编程思想。牛逼的框架都是这个领域的大神编写的,查看源码学习编程思想是我们提升个人技术很好的途径。

    #pragma mark - 面向过程

    处理事情以过程为核心,一步一步的实现。

    开发语言:C语言

    #pragma mark - 面向对象

    万物皆对象

    开发语言:Object-C Swift JAVA Android 。。。。。。

    #pragma mark - 链式编程思想

    是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)

    链式编程思想特点:

    方法的返回值是block,block必须有返回值(本身对象,就是方法的调用者),block参数(需要操作的值)

    代表:masonry框架

    框架中: mas_makeConstraints执行流程:
    1.创建约束制造者MASConstraintMaker,绑定控件,生成了一个保存所有约束的数组
    2.执行mas_makeConstraints传入进行的block
    3.让约束制造者安装约束
    * 1.清空之前的所有约束
    * 2.遍历约束数组,一个一个安装

    例子:

    // 创建红色view
    UIView *redView = [[UIView alloc] init];
    redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:redView];  // 设置约束前,一定要先把view添加上去


    [redView mas_makeConstraints:^(MASConstraintMaker *make) {
      // 链式编程思想特点:方法返回值必须要方法调用者
      // block:把需要操作的值当做block参数,block也需要返回值,就是方法调用者
      // 设置约束
      // 给make添加left,top约束,调用equalTo给这两个约束赋值
      make.left.top.equalTo(@10);
      make.right.bottom.equalTo(@-10);
    }];

    仿照masonry 写一个计算类框架

    为了使用方便给NSObject写一个分类,这样每个类都可以调用

    NSObject+Calculate.h 声明

    #import <Foundation/Foundation.h>
    #import "CalculateManager.h"
     
    @interface NSObject (Calculate)
    
    // 把所有的计算代码放在这里
    + (int)ey_makeCalculate:(void(^)(CalculateManager *))block;
     
    @end

    NSObject+Calculate.m 实现

    #import "NSObject+Calculate.h"
    
    
    @implementation NSObject (Calculate)
    + (int)ey_makeCalculate:(void (^)(CalculateManager *))block
    {
    // 创建计算管理者
    CalculateManager *mgr = [[CalculateManager alloc] init];
    
    // 执行计算
    block(mgr);
    
    return mgr.result;
    }
    @end

    CalculateManager.h 声明 真正实现计算的类

    #import <Foundation/Foundation.h>
    
    @interface CalculateManager : NSObject
    @property (nonatomic, assign) int result;
    
    - (CalculateManager *(^)(int))add;
    
    @end

    CalculateManager.m 实现

    #import "CalculateManager.h"
    
    @implementation CalculateManager
    
    - (CalculateManager * (^)(int))add
    {
      return ^(int value){
      _result += value;
      return self;
      };
    }
    @end

    ViewController.m 中使用

    int reslut = [NSObject ey_makeCalculate:^(CalculateManager *mgr) {
      mgr.add(5).add(6).add(7);
      // 用block替代方法
      // 把怎么计算的代码封装到block
    }];
    
    NSLog(@"计算的结果为:%d",reslut);

    #pragma mark - 响应式编程思想

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

     代表:KVO应用

    第十九:KVO底层实现原理

     #pragma mark - 函数式编程思想

     是把操作尽量写成一系列嵌套的函数或者方法调用。

     函数式编程思想本质:往方法中传入Block,方法中嵌套Block调用,把代码聚合起来管理

     函数编程思想特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,

              block参数(需要操作的值)

              block返回值(操作结果)

     代表:ReactiveCocoa,现在分为ReactiveObjC 和 ReactiveSwift

     ReactiveCocoa结合了以下几种编程风格:

    函数式编程:Functional Programming

    响应式编程:Reactive Programming

    所以,你可能听说过ReactiveCocoa被描述为函数响应式编程(FRP)框架。

    以后使用RAC解决问题,就不需要考虑调用顺序,直接考虑结果,把每一次操作都写成一系列嵌套的方法中,使代码高聚合,方便管理。

     更多内容--> 博客导航 每周一篇哟!!!

    有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!

  • 相关阅读:
    6 Django的视图层
    5 Django-2的路由层(URLconf)
    4 Django简介
    3 web框架
    2 http协议
    1 web应用
    15-jQuery补充
    14-jQuery的ajax
    13-轮播实现(各种)
    12-事件委托(事件代理)
  • 原文地址:https://www.cnblogs.com/CoderEYLee/p/Object-C-0023.html
Copyright © 2020-2023  润新知