gpt4 book ai didi

objective-c - NSError:方法传递错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:31:37 25 4
gpt4 key购买 nike

我不确定这是否正确:

- (void)parseSomething:(id)targetObject error:(NSError **)error {
NSError *parserError = nil;
[myParser parse:targetObject error:&parserError];

if (parserError != nil) {
*error = parserError;
}
}

线路:

*error = parserError;

我将参数中的错误设置为本地错误,是否设置正确?

或者我应该这样做:

error = &parserError;

代替?

最佳答案

在尝试取消引用之前,您需要确保 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 输出参数的方法通常都有一个 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;
}

关于objective-c - NSError:方法传递错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13062117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com