我正在绕过各个区 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/