将'__autoreleasing .....'发送到不兼容类型的参数

时间:2013-03-02 19:06:52

标签: ios objective-c cocoa-touch automatic-ref-counting

我有一个区块;

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)')

我不知道这意味着什么。有人可以解释一下发生了什么吗? 感谢

1 个答案:

答案 0 :(得分:5)

似乎SIResponseHandler是一个块类型,因此不应该在参数列表中作为带有*的指针加后缀,除非您确切知道自己在做什么。