这个方法定义和调用我做错了什么?

时间:2013-06-12 17:48:25

标签: objective-c-blocks

我在班级标题中有这个:

typedef void(^DBSuccessBlock)();
typedef void(^DBErrorBlock)(int errorNumber, NSString* description);

- (void) connect:(NSString*) path isFile:(BOOL) flag
        success:(DBSuccessBlock) success
          error:(DBErrorBlock) error;

这就是我尝试调用该方法的方法:

[db connect:filePathName isFile:YES success:^{
    // initialize db here if necessary
} error:^(int errorNumber, NSString *description) { //error on this line
    NSLog(description);
    return nil;
}];

错误行给了我这个编译错误:不兼容的块指针类型发送' void *(^)(int,NSString * _ strong)'参数类型' DBErrorBlock' (又名' void(^)(int,NSString * _strong)')

我看到的唯一区别是无效*与无效,我不知道为什么。任何人都可以帮我弄清楚为什么我会收到这个错误?感谢。

1 个答案:

答案 0 :(得分:1)

您将在返回类型为nil的块中返回值void。删除return nil行。