当前位置: 首页 > 面试题库 >

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

方俊
2023-03-14
问题内容

函数失败,并显示运行时错误:

-[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()

问题答案:

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

#ifdef DEBUG

#import <UIKit/UIKit.h>
#import <objc/runtime.h>

@implementation UIView (FixViewDebugging)

+ (void)load
{
    Method original = class_getInstanceMethod(self, @selector(viewForBaselineLayout));
    class_addMethod(self, @selector(viewForFirstBaselineLayout), method_getImplementation(original), method_getTypeEncoding(original));
    class_addMethod(self, @selector(viewForLastBaselineLayout), method_getImplementation(original), method_getTypeEncoding(original));
}

@end

#endif

当您的项目加载时,该load方法将执行,如果当前尚未实现,则会导致viewForFirstBaselineLayoutviewForLastBaselineLayout使用该viewForBaselineLayout实现,因此,视图调试使iOS8拥有了所寻找的行为。

要将其添加到您自己的项目中,请在您的项目中创建一个新的空Objective-C文件,然后将内容粘贴到其中。您可以随意命名。我将其称为“ UIView +
FixViewDebugging”。如果您在纯Swift项目中, 无需创建桥接头。该文件将被编译到您的项目中,您无需引用它。

请注意,由于,这仅适用于调试版本#ifdef DEBUG。您可以删除它,但是随后您可能会不小心将其编译到您的发行版本中(尽管它应该没有不良副作用)。如果该方法不适用于这些行,请DEBUG=1在构建设置>
Apple LLVM-预处理>预处理程序宏>调试中检查目标是否具有。



 类似资料:
  • 我在我的应用程序中使用MVVM模式。我有以下(简化版)VM类: 因此,一个Module2601_VM包含几个属性,以及Module2610_VM和ComPort_VM对象的列表。 我有一个MainModule_VM类中Module2601_VM对象的列表。 我想将这个Module2601集合及其子项绑定到树状视图中,并使用以下层次结构: 网关: 网关#0 COM#1 我的问题是,我的层次结构正常,

  • 问题内容: 我遇到一个奇怪的问题:我制作了2个视图控制器,可以用代码切换视图: 我的应用程序正确地向第一个视图控制器打开,然后,当我单击在Sprite Kit场景上创建的按钮时,我可以成功地将视图切换到新的视图控制器(我成功显示了第二个场景),但是,我可以切换后不再更改我的视图控制器。如果再次单击该按钮,则会收到以下消息: 尝试在Test_Vuforia.GameViewController上显示

  • 我试图重现在Protege中显示给我的OWL本体(OWL.ttl)的类层次结构,您可以在标准URI位置http://www.w3.org/2002/07/OWL#下载。 我遇到的问题是,当我调用以获取层次结构根类时,返回的结果为零。因此我没有根类可以向下递归并构建层次结构。 ==============================================================

  • 我有一个绑定到MVVM可观察集合的TreeView。我的项目模板由图像和文本块组成,如以下代码所示: 当然,发生这种情况是因为堆栈面板现在位于选择区域上方。 有什么解决办法吗?

  • 问题内容: 是否可以基于层次结构/ cte创建视图? 我看过一个有关如何基于链接递归查询生成结果集的示例。 我已经附上了ddl和声明。 谢谢你, 埃尔默 问题答案: 后已被指定(超出右括号),您需要选择从CTE的所有值: 这是构成视图的实际选择查询。 这是一个完整的工作示例,其中选择了视图的最终输出,以及一些其他语句,以允许这些语句在SQL Server Management Studio中一次执

  • 我想枢轴的数据帧像: 进入具有如下分层列的数据帧: 我尝试了,但它只会给我一个这样的框架: 如何更改列的层次结构?