0

可能重复:
Obj-C:__block 变量

在块编程中如何使用块作为参数

     NSArray *(^blockreturnarray) (NSArray *);
     blockreturnarray= ^(NSArray * a)
      {
          NSLog(@"%@",a); 
          return a;
      };

     blockreturnarray(array1);

简单我的问题我有一个块创建和另一个块创建那么如何在一个块中传递参数块。

4

1 回答 1

5

这可能会很麻烦,所以我会使用 typedef,它可能看起来像这样

typedef void (^basicBlock)(void);
typedef void (^blockAcceptingBlock)(basicBlock);

然后

basicBlock block = ^ {
    NSLog(@"Called from block passed as param");
}; 

blockAcceptingBlock parentBlock = ^(basicBlock childBlock) {
    childBlock();
};

parentBlock(block);

如果没有 typedef,它在所有圆括号的定义中会有点嘈杂(请记住,这些是简单的块,因此显示的 defs 仍然相当可读)

void (^block)(void) = ^ {
     NSLog(@"Called from block passed as param");
};

void (^parentBlock)(void (^childBlock)(void)) = ^(void (^childBlock)(void)) {
    childBlock();
};

parentBlock(block);

两个输出

#=> 2012-04-27 11:39:12.798 Untitled[19725:707] Called from block passed as param
于 2012-04-27T10:40:33.747 回答