Xcode 7.3中的调试视图层次结构失败

时间:2016-03-30 15:51:25

标签: xcode swift

此函数因运行时错误而失败:

-[UIWindow viewForFirstBaselineLayout]: unrecognized selector sent to instance 0x7fb9dae257d0

有人遇到过同样的问题吗?

UPD:
在模拟器iOS 8.1 / 8.4上失败。 9.3工作正常。

UPD2: UIWindow创建如下:

window = UIWindow(frame: UIScreen.mainScreen().bounds)    
window?.rootViewController = RootViewController.rootVC
window?.makeKeyAndVisible()

3 个答案:

答案 0 :(得分:21)

看起来Xcode 7.3使用viewForFirstBaselineLayout属性来绘制UI。但是,自iOS 9.0起,此属性已标记为可用。

Screenshot of UIView.h

应该在iOS 9.0之前的版本中使用

[UIView viewForFirstBaselineLayout]方法。似乎苹果公司的人不考虑这种情况。

答案 1 :(得分:21)

我通过在我的项目中放置以下修复程序让视图调试器再次工作:

load

当您的项目加载时,viewForFirstBaselineLayout方法将执行,导致viewForLastBaselineLayoutviewForBaselineLayout使用#ifdef DEBUG实现(如果它们当前未实现),因此查看调试获取iOS8风味它正在寻找的行为。

要将此项添加到您自己的项目中,请在项目中创建一个新的空Objective-C文件并粘贴内容。您可以根据需要为其命名。我称之为“UIView + FixViewDebugging”。如果您处于纯Swift项目中,则需要创建桥接标头。该文件将被编译到您的项目中,您无需参考它。

请注意,这仅适用于调试版本,因为DEBUG=1。您可以删除它,但之后您可能会意外地将其编译到您的发布版本中(尽管它应该没有不良副作用)。如果此方法无法使用这些行,请检查您的目标在构建设置>中是否有ln(x^sqrt(2))-x^3+4。 Apple LLVM - 预处理>预处理器宏>调试。

答案 2 :(得分:0)

是。当单击调试视图层次结构按钮时,页面没有任何内容,并打印" [UIWindow viewForFirstBaselineLayout]:无法识别的选择器发送到实例0x7fb9dae257d0"

要解决这个问题,请确保您使用的iOS系统不在iOS 9.0之下,您仍然可以自由使用该功能。