2013-06-12 51 views
1

我有這個在我的課標題:我在做什麼這個方法定義和調用錯了?

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; 
}]; 

錯誤行給我這個編譯錯誤:不兼容的塊指針類型發送 '無效*(^)(INT,的NSString * _ 強)',以類型的參數 'DBErrorBlock'(又名 '無效(^)(INT,的NSString * _strong)')

唯一的區別我看到是無效的* vs無效,我不是確定爲什麼。任何人都可以幫我弄清楚爲什麼我得到這個錯誤?謝謝。

+0

你是否100%肯定這就是你的'typedef'和方法聲明的樣子? – trojanfoe

+0

我直接從我的文件中複製它。 –

回答

1

您將在返回類型void的塊中返回值nil。刪除return nil行。

+0

就是這樣。謝謝。仍在學習使用塊的細微差別。 :) –

相關問題