Objective-C块参数问题:此块声明不是原型

时间:2017-12-21 01:18:37

标签: ios objective-c block

我正在学习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现在不支持该语法。 我想知道如何解决它,以及为什么。

非常感谢提前。

2 个答案:

答案 0 :(得分:3)

当您尝试使用一组空括号()来定义函数或块原型时,可以获得“非原型”警告。

void放在parens的中间 - 即。 (id _Nullable (^)(void)),您应该解决问题。

答案 1 :(得分:0)

如果您重新定义签名以接受数组而不是任意数量的参数,那么您将轻松解决它