Objective-C 块参数问题:此块声明不是原型
Objective-C block parameter Issue: This block declaration is 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)()
。
Xcode 现在不支持语法。
我想知道怎么解决,为什么。
非常感谢。
当您尝试使用一组空括号 ()
定义函数或块原型时,您会收到 "not a prototype" 警告。
在括号中间放一个void
——也就是(id _Nullable (^)(void))
,你应该解决这个问题。
如果您重新定义签名以接受一个数组而不是任意数量的参数,那么您将很容易解决它
我正在学习 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)()
。
Xcode 现在不支持语法。 我想知道怎么解决,为什么。
非常感谢。
当您尝试使用一组空括号 ()
定义函数或块原型时,您会收到 "not a prototype" 警告。
在括号中间放一个void
——也就是(id _Nullable (^)(void))
,你应该解决这个问题。
如果您重新定义签名以接受一个数组而不是任意数量的参数,那么您将很容易解决它