zoukankan      html  css  js  c++  java
  • block 应用说明

    一、Block定义
    Block可以理解为一个函数指针(即它是一个指针,指向某个函数)
    returnType (^blockName) (parameter list) = ^ (parameter list) {代码块};
    说明:
    returnType:block的返回类型,可定义为void;
    blockName:block的命名,可根据不同的变量/函数命名规范进行命名;
    parameter list:block形参类型定义,可传入多个值,也可没有参数;

    二、Block作为函数参数传递
    returnType (^blockName) (parameter list)
    说明:
    returnType:block的返回类型,可定义为void;
    blockName:block的命名,可根据不同的变量/函数命名规范进行命名;
    parameter list:block形参类型定义,可传入多个值,也可没有参数;
    实际声明方式:
    + (void)updateImage:(void(^)(NSInteger status,NSDictionary *res))block;

    举例说明:

    1)定义无参无返回值的Block
    void (^printBlock)() = ^(){
      printf("no number");
    };
    printBlock();
    
    void (^myBlock)(NSString *); //block 声明
    
    - (void)viewDidLoad 
    {
      (1)block 在代码中的实现
      myBlock = ^(NSString *text){
        NSLog(@"my text = %@", text);
      };
      (2)调用block函数的实现
      int nCount = myCount(10, 5);
      NSLog(@"count = %zi", nCount);
     }
    
    //block函数原型定义
      int (^myCount)(int a, int b) = ^(int a, int b)
      {
        return a+b;
      };
    //变更网络请求方式
    -(void)ModifyRequestMode:(void(^)())block
    {
      //取消所有任务,放到全局队列中优先级最高
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        ZLBAFHTTPClient *httpClient = [ZLBAFHTTPClient shareClient];
        //取消队列中的所有网络请求任务
        [httpClient cancelAllTasks];
        //取消队列中所有任务
        [httpClient.workQueue cancelAllOperations];
        //重新匹配正确的CDN节点
        [[ZLBGlobal sharedGlobal] changeNetwork:^{
          block();
        }];
      });
    }
    
    - (RACDisposable *)subscribeNext:(void (^)(id x))nextBlock completed:(void (^)(void))completedBlock {
      NSCParameterAssert(nextBlock != NULL);
      NSCParameterAssert(completedBlock != NULL);
    
      RACSubscriber *o = [RACSubscriber subscriberWithNext:nextBlock error:NULL completed:completedBlock];
      return [self subscribe:o];
    }

     

  • 相关阅读:
    Request Payload 和 Form Data 的区别
    es6 字符串模板拼接和传统字符串拼接
    TypeScript
    Jquery的$(document).click() 在iphone手机上失效的问题
    Vuex 是什么?
    什么是JSONP?
    git 放弃本地修改操作
    CSS3+HTML5+JS 实现一个块的收缩&展开动画
    Promise学习笔记(一)
    React@16.13.1配合antd UI使用,自定义主题
  • 原文地址:https://www.cnblogs.com/xujinzhong/p/11155069.html
Copyright © 2011-2022 走看看