Objective c 如何跨多个方法冒泡错误对象?

Objective c 如何跨多个方法冒泡错误对象?,objective-c,cocoa,pointers,nserror,Objective C,Cocoa,Pointers,Nserror,这更像是一个C问题,但问题来了 我有一个方法,它接收指向NSError对象的指针的地址作为参数。现在,该方法被深埋在类层次结构的几个层次中,我需要使错误对象一直冒泡到顶部 我可以在每个方法上返回error对象,但我更愿意使用Cocoa方法,并在将error对象作为参数传递时返回布尔值 我该怎么做 我可以在每个方法上返回error对象,但我更愿意使用Cocoa方法,并在将error对象作为参数传递时返回布尔值 Cocoa方式是布尔直接返回,通过引用(即通过指针)返回错误值,如下所示: NSErro

这更像是一个C问题,但问题来了

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

我可以在每个方法上返回error对象,但我更愿意使用Cocoa方法,并在将error对象作为参数传递时返回布尔值

我该怎么做

我可以在每个方法上返回error对象,但我更愿意使用Cocoa方法,并在将error对象作为参数传递时返回布尔值

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

NSError *error = nil;
if ([foo trySomething:bar error:&error]) {
    //Success!
} else {
    //Failure!
}
(或者,
trySomething:error:
可能返回一个对象,在这种情况下,您将该对象视为布尔返回:non-
nil
为真/成功,
nil
为假/失败。)

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

- (void) trySomething:(MyBar *)bar error:(out NSError **)outError
    if ([bartender restock:bar error:outError]) {
        //Success!
    } else {
        //Failure!
    }
}
您可以将这两种方法结合起来,在您自己的局部变量中捕获错误对象,以便在失败情况下对其进行自定义或包装,然后将自定义/包装错误存储在错误返回指针处,供调用方接收

我可以在每个方法上返回error对象,但我更愿意使用Cocoa方法,并在将error对象作为参数传递时返回布尔值

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

NSError *error = nil;
if ([foo trySomething:bar error:&error]) {
    //Success!
} else {
    //Failure!
}
(或者,
trySomething:error:
可能返回一个对象,在这种情况下,您将该对象视为布尔返回:non-
nil
为真/成功,
nil
为假/失败。)

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

- (void) trySomething:(MyBar *)bar error:(out NSError **)outError
    if ([bartender restock:bar error:outError]) {
        //Success!
    } else {
        //Failure!
    }
}
您可以将这两种方法结合起来,在您自己的局部变量中捕获错误对象,以便在失败情况下对其进行自定义或包装,然后将自定义/包装错误存储在错误返回指针处,供调用方接收