1

私はブロックを持っています。

typedef void (^SIResponseHandler) (id obj, NSString *error);

および方法:

+ (void)uploadPhoto:(UIImage *)photo
toPathForComponents:(NSArray *)components
  completionHandler:(SIResponseHandler)responseHandler;

上記のメソッドを呼び出す別のメソッド:

+ (void)updateProfilePhoto:(UIImage *)photo handler:(SIResponseHandler *)handler {

    NSArray *components = @[@"users", sharedInstance.username, @"profile", @"photo", @"upload"];
    [SIRequest uploadPhoto:photo
       toPathForComponents:components
           progressHandler:nil
         completionHandler:handler];
}

最後の行で、次のエラーが発生します。

Sending '__autoreleasing SIResponseHandler *' (aka 'void (^__autoreleasing *)(__strong id, NSString *__strong)') to parameter of incompatible type 'SIResponseHandler' (aka 'void (^)(__strong id, NSString *__strong)')

これが何を意味するのかわかりません。誰かが何が起こっているのか説明してもらえますか?ありがとう

4

1 に答える 1

5

はブロックタイプのようです。そのため、何をしているのかを正確に理解していない限り、引数リストにSIResponseHandlerポインタとして接尾辞を付けることはできません。*

于 2013-03-02T19:10:20.150 に答える