我正在学习ReactiveObjC,ReactiveCocoa Objective-C版本。
对于以下代码:在RACSignal.h
,
- (RACSignal *)reduceEach:(id _Nullable (^)())reduceBlock RAC_WARN_UNUSED_RESULT;
(id _Nullable(^)())
Xcode报告错误:
这个块声明不是原型
可以在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)()
。
Xcode现在不支持该语法。我想知道如何解决它,以及为什么。
提前谢谢了。
当您尝试使用一组空括号()
定义函数或块原型时,您可以获得“非原型”警告。
把void
放在parens的中间 - 即。 (id _Nullable (^)(void))
,你应该解决这个问题。
如果重新定义签名以接受数组而不是任意数量的参数,那么您将轻松解决它