iphone - 有没有一种方便的方法可以从一个方法中获得两个不同的 "nil-like"可能的返回值?

标签 iphone cocoa-touch ios null

有问题的方法(实际上是一个多态实现的递归搜索方法系列)返回一个指向特定类型对象的指针。在失败的情况下,我一直返回零。现在我想要两种不同的失败。实现它的最简单方法是什么?

最佳答案

最好的方法是保留 return nil; ,但将错误指针作为函数参数之一。这样,您可以发送一个错误,然后检查它的值以查看发生了什么。您的函数仍将运行,但您可以控制返回的内容。

例如,下面是我用来保存 managedObjectContext 的一些代码:

NSManagedObjectContext *moc = [self managedObjectContext];

NSError *error;
if (![moc save:&error]) {
    NSString *description = [error localizeDescription];
            NSInteger code = [error code];
}

我已经调整了 block 的内部,以展示几种从错误中提取信息的方法。对您来说,最好使用简单的错误代码来区分不同的 nil 值。

这是一个代码示例(尽管可能不是最好的方法,因为您必须复制代码来解释错误消息):
-(id) functionCall:(NSError *)error {
    ...
    if (nilCondition) {

        if (firstNilCondition) {
            [error setCode:1];
        }
        if (firstNilCondition) {
            [error setCode:2];
        }

        return nil;
    }
}

关于iphone - 有没有一种方便的方法可以从一个方法中获得两个不同的 "nil-like"可能的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328232/

相关文章:

ios - iPhone-快速加载声音文件

iphone - 如何设置 UIButton 保持选中/突出显示直到匹配条件?

ios - UISplitViewController iPad 行为

ios - 如何从 iOS 设置中检测动态字体大小变化?

ios - SpriteKit/Swift - 当两个节点已经接触时如何检查它们的接触

iphone - __NSAutoreleaseNoPool() : Object 0x753c2f0 of class General autoreleased with no pool in place - just leaking

iphone - XCode 不小心将我的项目添加到文件夹

ios - UICollectionView 单元格之间的活力效果

ios - 创建修改UIButton的方法时出错

ios - 显示/隐藏 SearchBar 后后退按钮图像未显示