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];
    }

     

  • 相关阅读:
    如何禁止复制网页内容?(javascript)
    CSS实现的div仿制Textarea效果
    C/S WinForm自定义控件实现B/S菜单样式
    ER/Studio 数据库建模
    设为首页JS,加入收藏夹js,加入收藏夹代码,设为首页代码,火狐和ie兼容
    entity framework进行一对多的联合查询
    增加asp.net应用程序性能的19种方法
    MVC Models定义验证属性
    [导入]linq与xml
    Entity Framework 批量删除
  • 原文地址:https://www.cnblogs.com/xujinzhong/p/11155069.html
Copyright © 2011-2022 走看看