void函数的Objective C错误处理

时间:2014-07-01 00:05:37

标签: objective-c error-handling

我有一个

的功能
- (void)doSomeFunctionWithError:(NSError **)error;

如果该函数确实导致错误,我该如何检查是否发生错误? Apple建议检查nil的返回值,但显然我不能在这里做。我目前只是检查错误值是否为零,但似乎不赞成。

1 个答案:

答案 0 :(得分:3)

您混淆的原因是提供此方法的人写错了。 Apple是对的:除非事先知道指针另一端有NSError,否则不应检查NSError指针的值。该方法应该返回一些告诉你的东西。

正确的约定,如果方法没有返回某个东西或者nil作为事情进展顺利的指示,那就是返回一个BOOL,如下所示:

- (BOOL)doSomeFunctionWithError:(NSError **)error;

那样,你有事要检查。例如,查看NSFileManager;它的很多方法都有这种模式(参见例如linkItemAtURL:...)。