objective-c - 如何在多种方法中冒泡错误对象?

标签 objective-c cocoa pointers nserror

这更像是一个 C 问题,但就这样了。

我有一个方法,它接收指向 NSError 对象的指针的地址作为参数。现在,该方法被埋藏在类层次结构深处的几层中,我需要使错误对象一直冒泡到顶部。

我可以在每个方法上返回错误对象,但我宁愿以 Cocoa 方式执行,并在将错误对象作为参数传递时返回 bool 值。

我该怎么做?

最佳答案

I could return the error object on each method but I'd rather do it the Cocoa way and return a boolean while passing the error object as a parameter.

Cocoa 方式是 bool 直接返回,并通过引用(即通过指针)返回错误值,如下所示:

NSError *error = nil;
if ([foo trySomething:bar error:&error]) {
    //Success!
} else {
    //Failure!
}

(或者,trySomething:error: 可能返回一个对象,在这种情况下,您将该对象视为 bool 返回:非nil 为 true/succeeded,nil 为 false/失败。)

为了使其可链接,每个方法(最外面的方法除外)都应该有一个错误指针参数,并在其实现中使用它:

- (void) trySomething:(MyBar *)bar error:(out NSError **)outError
    if ([bartender restock:bar error:outError]) {
        //Success!
    } else {
        //Failure!
    }
}

您可以结合使用这两种方法,在自己的局部变量中捕获错误对象,以便在将自定义/包装器错误存储在错误返回指针处以供调用者接收之前自定义或将其包装在失败情况中。

关于objective-c - 如何在多种方法中冒泡错误对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4479494/

相关文章:

c++ - 试图了解指针返回类型的工作原理

c - 在同一张表中总结不同类型有什么技巧吗?

ios - NSLayoutConstraint 和间距

ios - textFieldShouldBeginEditing : Only Recognizes 1 textField

objective-c - 如何在 View Controller 之间进行淡入淡出/无过渡

iphone - UITableView - 单元格之间的线条

objective-c - NSProgressIndicator 未显示进度

cocoa - 翻转 NSViews 层(CALayer)的坐标

cocoa - Release模式下捕获NSLog

c++ - 通过返回指向 map 的指针访问 map C++