objective-c - 如何使用 block 作为参数

标签 objective-c ios objective-c-blocks

<分区>

Possible Duplicate:
Obj-C: __block variables

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

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

     blockreturnarray(array1);

在简单的我的问题中,我创建了一个 block ,还创建了另一个 block 那么如何在一个 block 中传递参数 Block。

最佳答案

这可能会变得毛茸茸,所以我会使用 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,它在所有圆括号的定义中会有点嘈杂(请记住,这些是简单的 block ,因此显示的 def 仍然相当可读)

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

关于objective-c - 如何使用 block 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10348514/

上一篇:objective-c - 如何从 NSString 中省略某个子字符串?

下一篇:iphone - 无法连接 iPad socket ?

相关文章:

ios - 如何添加 NSMutableArray 的总和

ios - 如何使用 Swift 在 iOS 应用程序中接收/导入共享数据?

ios - monotouch - 可重用的 iOS 自定义 View

IOS7,8,9 接收之前的推送通知行为

ios - 零检查 block

objective-c - 使用 typedef 的不兼容 block 指针类型

ios - 使用 block 中访问 self 的方法是否安全

iphone - 为什么这段代码不能用于从类中引用常量?

ios - 场景转换按钮的选择器无法识别

ios - 应用程序可以打开浏览器,让用户登录并接收文件吗?