1. ホーム
  2. ios

[解決済み] Objective-C ブロックパラメータ 発行 このブロック宣言はプロトタイプではありません

2022-02-07 10:40:47

質問事項

学習中 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;
}

ちょっと汎用的。ブロックの中に0個以上のパラメータを入れられると思います。 void (^block)() と宣言しています。

この構文は、現在Xcodeではサポートされていません。 それを解決する方法、理由を知りたいです。

よろしくお願いします。

どのように解決するのですか?

関数やブロックのプロトタイプを空の括弧で定義しようとすると、"not a prototype"の警告が表示されることがあります。 () .

を置く。 void をペレンの真ん中に置く、つまり (id _Nullable (^)(void)) をクリックすると、問題が解決するはずです。