Mac OS X中的Autolayout警告

3
每次运行我的应用程序时,我都会收到一个警告,我不完全理解:

调用-[WebHTMLView layout]后,布局仍需要更新。WebHTMLView或其超类可能已覆盖-layout而没有调用super。或者,在更新布局的中间某个位置可能会使布局变脏。这两种情况都是Cocoa Autolayout中的编程错误。如果一些预先使用Cocoa Autolayout类有一个名为layout的方法,则前者很可能会出现,但应该进行修复。

(我看到了相关问题,但提供的答案解决了其他问题,因此我提出了这个问题。)只要我向我的应用程序添加Web视图,就会出现警告。这是什么意思,我应该如何解决这个问题?
2个回答

3

看起来- (void)layout是在WebHTMLView中实现的。WebKit的源代码可在苹果的开放源代码页面上查看。

http://www.opensource.apple.com/source/WebKit/WebKit-7534.53.11/mac/WebView/WebHTMLView.mm

在自动布局文档中,它指出只有当您需要使用自动布局时才需要实现“layout”来对子视图进行自定义布局逻辑。接着文档又提到,在您的自定义实现中应始终调用[super layout]。但是在WebHTMLView中并没有这样做。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html%23//apple_ref/occ/instm/NSView/layout

这条消息可能与您的项目无关,可以安全忽略。在一个空白的新项目中,我也遇到了同样的情况。

这个有雷达项吗? - adib
1
我使用了一个简单的NSTableView,拖动项目时出现了这个问题。我没有实现任何布局方法,所以这很像是苹果Swifty Cocoa实现中的一个bug。建议提交Radar吗?我想不是。我仍然有超过半打尚未得到苹果处理的编译器错误报告 :-( - qwerty_so

0
除了已知的带拖动功能的NSTableView之外,我发现如果打开NSFontManager,它将始终显示此消息。这不仅适用于Swift,还适用于苹果自己的演示程序CoreTextArcCocoa。因此,这肯定是苹果内部的某个错误。

给Thomas,也许它来自NSFontPanel而不是NSFontManager。 - Jiulong Zhao
@JiulongZhao 当然,它是从“编辑”菜单中弹出的字体面板。 - qwerty_so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接