Objective-C block的参数问题: This block declaration not a prototype

我在学 ReactiveObjC, ReactiveCocoa的Objective-C版.
RACSignal.h 中,以下代码:,

- (RACSignal *)reduceEach:(id _Nullable (^)())reduceBlock
RAC_WARN_UNUSED_RESULT; (id _Nullable (^)())

Xcode 报错:

This block declaration is not a prototype

reduceBlock()能放很多参数.
UIAlertView+RACSignalSupport.m 中,以下代码, 其他文件也有 ,

- (RACSignal *)rac_buttonClickedSignal {

RACSignal *signal = [[[[self.rac_delegateProxy
    signalForSelector:@selector(alertView:clickedButtonAtIndex:)]
    reduceEach:^(UIAlertView *alertView, NSNumber *buttonIndex){
        return buttonIndex;
    }]
......
return signal; }

有点泛型的感觉。
void (^block)() 这样声明,就能在block 放0到多个参数了.
Xcode现在不支持这种语法,怎样解决,解释下更好。

阅读 5.7k
1 个回答

只是个warnning吧,

试试 括号里面加上

id _Nullable ,...

//比如

@property (nonatomic, strong) void (^testBlock)(id _Nullable ,...);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题