0
- (void)doSomeFunctionWithError:(NSError **)error;
如果函数导致错误行的功能,我怎么检查发生了错误?苹果建议检查返回值为零,但显然我不能这样做。我目前只是检查错误值是不是零,但似乎是皱眉。
- (void)doSomeFunctionWithError:(NSError **)error;
如果函数导致错误行的功能,我怎么检查发生了错误?苹果建议检查返回值为零,但显然我不能这样做。我目前只是检查错误值是不是零,但似乎是皱眉。
你们混淆的原因是提供这种方法的人写错了。苹果是正确的:你不应该检查NSError指针的值,除非事先知道指针的另一端有一个NSError。该方法应该返回告诉你这一点。
正确的约定,如果方法不返回东西有或无作为的事情是否顺利的指标,是返回一个BOOL,像这样:
- (BOOL)doSomeFunctionWithError:(NSError **)error;
这样的话,你有什么去检查。看,例如,在NSFileManager;它的很多方法都有这种模式(见例如linkItemAtURL:...
)。
澄清:你是否从功能的内部或外部“检查”?你是这个函数的调用者还是实现者(作者)? – matt
如果你是调用者,那么作者应该返回一个BOOL,以便知道是否发生错误。 – matt
如果你是作者,那就照我刚刚说的去做吧。返回BOOL,不是void,表示事情是否顺利。 – matt