有问题的方法(实际上是多态实现的递归搜索方法族)返回指向某种类型对象的指针。在失败的情况下我一直没有回来。现在我想要有两种不同的失败。实现它的最简单方法是什么?
答案 0 :(得分:7)
执行此操作的最佳方法是保留return nil;
,但将错误指针作为函数参数之一。这样,您可以发送错误,然后检查它的值以查看发生的情况。您的功能仍然会运行,但您可以控制返回的内容。
作为一个例子,这里是我用来保存managedObjectContext的一些代码:
NSManagedObjectContext *moc = [self managedObjectContext];
NSError *error;
if (![moc save:&error]) {
NSString *description = [error localizeDescription];
NSInteger code = [error code];
}
我已经调整了块的内部,以显示从错误中提取信息的几种方法。对你来说,最好使用简单的错误代码来区分不同的nil值。
这是一个代码示例(尽管可能不是最好的方法,因为您必须复制代码来解释错误消息):
-(id) functionCall:(NSError *)error {
...
if (nilCondition) {
if (firstNilCondition) {
[error setCode:1];
}
if (firstNilCondition) {
[error setCode:2];
}
return nil;
}
}