2014-07-01 87 views
0

我沿着的ObjectiveC错误处理void函数

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

如果函数导致错误行的功能,我怎么检查发生了错误?苹果建议检查返回值为零,但显然我不能这样做。我目前只是检查错误值是不是零,但似乎是皱眉。

+0

澄清:你是否从功能的内部或外部“检查”?你是这个函数的调用者还是实现者(作者)? – matt

+3

如果你是调用者,那么作者应该返回一个BOOL,以便知道是否发生错误。 – matt

+3

如果你是作者,那就照我刚刚说的去做吧。返回BOOL,不是void,表示事情是否顺利。 – matt

回答

3

你们混淆的原因是提供这种方法的人写错了。苹果是正确的:你不应该检查NSError指针的值,除非事先知道指针的另一端有一个NSError。该方法应该返回告诉你这一点。

正确的约定,如果方法不返回东西有或无作为的事情是否顺利的指标,是返回一个BOOL,像这样:

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

这样的话,你有什么去检查。看,例如,在NSFileManager;它的很多方法都有这种模式(见例如linkItemAtURL:...)。