error
在尝试取消引用之前,您需要确保它不是 nil。此外,不需要本地 NSError。它会这样写代码:
- (void)parseSomething:(id)targetObject error:(NSError **)error {
[myParser parse:targetObject error:error];
}
但是,如果您真的想要语言环境变量(或出于演示目的)。那么这个:
- (void)parseSomething:(id)targetObject error:(NSError **)error {
NSError *parserError = nil;
[myParser parse:targetObject error:&parserError];
if (error && parserError) {
*error = parserError;
}
}
此外,大多数具有NSError
像这样的 out 参数的方法通常都有一个 BOOL 返回值或其他一些返回值来指示成功与否。您不应依赖错误参数来指示是否存在错误。
- (BOOL)parseSomething:(id)targetObject error:(NSError **)error {
NSError *parserError = nil;
BOOL ok = [myParser parse:targetObject error:&parserError];
if (error && parserError) {
*error = parserError;
}
return ok;
}