0
- (void)doSomeFunctionWithError:(NSError **)error;
如果函數導致錯誤行的功能,我怎麼檢查發生了錯誤?蘋果建議檢查返回值爲零,但顯然我不能這樣做。我目前只是檢查錯誤值是不是零,但似乎是皺眉。
- (void)doSomeFunctionWithError:(NSError **)error;
如果函數導致錯誤行的功能,我怎麼檢查發生了錯誤?蘋果建議檢查返回值爲零,但顯然我不能這樣做。我目前只是檢查錯誤值是不是零,但似乎是皺眉。
你們混淆的原因是提供這種方法的人寫錯了。蘋果是正確的:你不應該檢查NSError指針的值,除非事先知道指針的另一端有一個NSError。該方法應該返回告訴你這一點。
正確的約定,如果方法不返回東西有或無作爲的事情是否順利的指標,是返回一個BOOL,像這樣:
- (BOOL)doSomeFunctionWithError:(NSError **)error;
這樣的話,你有什麼去檢查。看,例如,在NSFileManager;它的很多方法都有這種模式(見例如linkItemAtURL:...
)。
澄清:你是否從功能的內部或外部「檢查」?你是這個函數的調用者還是實現者(作者)? – matt
如果你是調用者,那麼作者應該返回一個BOOL,以便知道是否發生錯誤。 – matt
如果你是作者,那就照我剛剛說的去做吧。返回BOOL,不是void,表示事情是否順利。 – matt