我在NSOutlineView中遇到奇怪的崩溃:当我点击“折叠”按钮时,应用程序立即崩溃,甚至“异常断点”也无助于查看问题所在。
我试过在没有调试器的情况下运行应用程序,并重现了这个问题。一旦应用程序崩溃,我得到了OSX崩溃窗口,并能够从那里提取崩溃消息:The window has been marked as needing another Update Constraints in Window pass, but it has already had more Update Constraints in Window passes than there are views in the window
还有调用堆栈,但由于libsystem_c.dylib内部发生了崩溃,所以它没有帮助,所以我不在这里发布它。
自动排版好像出了点问题,完全不知道下一步该怎么做,请给予我一个建议!
此外,还有一件事,这是在更新到OSX莫哈韦之后才开始的。
4条答案
按热度按时间mrphzbgm1#
经过几个小时的调试和测试,我注意到那个消息是由“无限布局循环”引起的。
与大纲视图相关的不同代码导致NSSplitView进行布局。在崩溃之前,委托方法
- (CGFloat) splitView:(NSSplitView*)sender constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex
已被调用了大约200次。很难捕捉到这个问题,因为它实际上不是无限递归,所以仅仅调试器没有太大帮助。我只是添加了一些简单的代码来帮助我识别这个问题:
static int a = 0; NSLog(@"Layout: %d", a++);
希望我的经验能对人家有所帮助!
0md85ypi2#
对于在Xcode 14和macOS中使用SwiftUI时遇到问题的用户:我刚刚通过隐藏一个带有动画的视图遇到了同样的崩溃。我的主视图包含两个视图,其中一个视图包含一个空的ScrollView,它本身并没有引起问题,但是通过改变它的大小,它崩溃了。只是在ScrollView中添加一个基本的
Text
就解决了我的问题,应用程序不再崩溃了。35g0bw713#
我将我的构建更新为IOS 14和Mac OS 20. 15. 6,错误消失了。
yc0p9oo04#
试着关闭笔尖中的“使用自动布局”复选框(在文件检查器标签中)。2可能需要在每个视图中禁用它。
同样,不相关,但是莫哈韦强迫你使用核心动画。我的大多数笔尖都关闭了“设置想要层”。但是,在我的一个笔尖中,我有一个流浪的setWantsLayer复选框被选中。当我取消选中它时,视图(NSSearchField)正确绘制