无法在禁用 Objective-C 异常的情况下使用'@try'



im试图在OBJ-C中进行类别并使用@try-catch,因为没有其他方法可以检查UIStoryboard中的标识符是否存在。

- (UIViewController *)viewControllerWithID:(NSString *)key {
    UIViewController *vc;
    @try { // ERROR: Cannot use '@try' with Objective-C exceptions disabled
        vc = [self instantiateViewControllerWithIdentifier:key];
    }
    @catch (NSException *ex) {}
    return vc;
}

不能将'@try'与Objective-C例外禁用

我谷歌搜索了该错误,发现我必须检查是否在构建设置中将Enable Objective-C Exceptions设置为"是"。我检查了一下,设置为是。

它是我找到的唯一解决方案,并且它不起作用。

im使用Xcode 6.2,这是一个迅速的项目,但是Swift不支持 @try-catch,这就是为什么我在obj-c中这样做。


当我将相同的设置设置为no时,我会收到一个重复的错误消息,当我将其设置为"是"时,我只会收到一个错误消息。这真的很奇怪。

您根本不应该尝试捕获此例外。如果您尝试实例化不存在的视图控制器,则是一个严重的编程错误。当然,您知道当您编写代码时,有什么视图控制器?

编辑

让我扩展一点。如果要根据(称)用户输入选择一个视图控制器,则应验证它在允许的视图控制器的列表中(您编写) 您尝试实例化,因此永远不要看到例外。

我认为这是xcode 6.2中的一个愚蠢的错误,当我将文件传输到xcode 6.3时,它不再给我错误。

相关内容

最新更新