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时,它不再给我错误。