iOS。将 block 作为参数传递给 block

标签 ios objective-c-blocks

我正在绕过各个区 block 并尝试发现它们的使用方法。 所以我想知道是否可以像参数一样传递 block 到 block ?

这里是一些示例代码:

//声明
静态 id (^someBlock)(id) = ^(id someClass) {
   //做一些事情来获取类的一些类实例
   //检查类实例是否响应@selector
   //如果是 - 执行选择器
}

//用法
+ (实例类型)someMethod {
   someBlock(SomeClass.class);
  //做额外的工作并返回一些实例类型
}

这工作正常,但还不够好,因为如果调用者想要在 someBlock 完成时做一些额外的事情,我们有义务调用者响应选择器。

所以我的问题是如何使用参数 block 调用 someBlock block ,我希望在 someBlock 完成时执行该参数 block 。

有些喜欢:

//声明
    静态 id (^someBlock)(id, ^otherBlock) = ^(id someClass, ????) {
       //做一些事情来获取类的一些类实例
        其他 block ();
    }

有什么建议吗?

PS:请注意,问题不在于将 block 作为参数传递给方法。

谢谢, 维内林

最佳答案

这是您要找的吗?

static id (^someBlock)(id, void (^otherBlock)()) = ^id (id someClass, void (^otherBlock)()) {
    otherBlock();
    return nil; // just because you declares a `id` return type
};

并称其为

someBlock(someClass, ^() {
    NSLog(@"other stuff");
});

关于iOS。将 block 作为参数传递给 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20573910/

相关文章:

objective-c - 声音效果未播放

android - 如何防止在使用 Google Play 服务的多人在线 Android/iOS 游戏中作弊?

ios - 使用类别中的 block 扩展 UIRefreshControl

ios - UIAlertView 在 block 内时崩溃

ios - 如何在这个 block 中强烈修复 "Capturing ' block '很可能导致保留循环'

objective-c - 带有来自 Amazon S3 的 urlPath 的 TTImageView

php - Xcode 7 beta swift 使用未解析的标识符

ios - AppCenter 构建失败,没有这样的模块

ios - 如何检查全局调度队列是否为空?

objective-c - Objective-C block : Is there a way to avoid 'self' being retained?