在我的OS X中使用swift遇到了这个错误:
"此应用程序正在从后台线程修改自动布局引擎,这可能导致引擎损坏和奇怪的崩溃.这将导致未来版本中的异常."
我有一个我的NSWindow,我正在交换contentView
窗口的视图.当我尝试在窗口上执行操作时,或者在向窗口添加窗口时,我收到错误.尝试禁用自动调整大小的东西,我没有任何使用自动布局的东西.有什么想法吗?NSApp.beginSheet
subview
有时它很好,没有任何反应,有时它完全打破了我的UI
负担
对于搜索,错误消息是:
此应用程序正在从后台线程修改autolayout引擎,这可能导致引擎损坏和奇怪的崩溃.这将在将来的版本中导致异常.
我知道这意味着从后台线程调用一些UIKit代码,我知道解决方案是将代码包装进去
dispatch_async(dispatch_get_main_queue(), ^(void){ <code> });
我的问题是找到这样做的地方,因为没有任何打印的堆栈跟踪引用我的应用程序代码.我证明这是否定的证据是在调试输出窗口中搜索(命令-f)我的应用程序的名称; 我有24个堆栈跟踪被丢弃,我的应用程序名称不在其中任何一个,除了顶部有错误消息.我可以发布其中一个,但这似乎没有用.
在我今天工作的情况下,在转换视图控制器viewWillDisappear()
之前和之后都会发生这种情况viewWillAppear()
.我发现我的部分代码要包装dispatch_async()
,但现在都处理完了.我有断点和调试消息,其中分配和取消分配与视图控制器相关的对象,并且它们都在异常消息出现后触发.在调试和发布模式下,模拟器和我的iOS9 iPhone都会发生这种情况.
如何识别显然修改UI的后台代码?
当我在模拟器中运行我的应用程序时,我在控制台中获取此日志.在iOS 8中没有看到这个.我不太清楚是什么导致了这一点.有没有其他人遇到同样的问题,如果是这样,它是如何解决的?或者是否有人可以提供任何帮助?
当我更新Xcode7时,我收到了这条消息.你能告诉我解决方案吗?谢谢.
此应用程序正在从后台线程修改autolayout引擎,这可能导致引擎损坏和奇怪的崩溃.这将在将来的版本中导致异常.
Stack:(
0 CoreFoundation 0x250df883 <redacted> + 150
1 libobjc.A.dylib 0x367dedff objc_exception_throw + 38
2 CoreFoundation 0x250df7b1 <redacted> + 0
3 Foundation 0x25f7be63 <redacted> + 170
4 Foundation 0x25e21ba7 <redacted> + 38
5 UIKit 0x292f3aa9 <redacted> + 52
6 UIKit 0x292f4487 <redacted> + 222
7 UIKit 0x299ccfa5 <redacted> + 288
8 UIKit 0x294e5fa9 <redacted> + 148
9 UIKit 0x291ed6bb <redacted> + 694
10 QuartzCore 0x28ab967d <redacted> + 128
11 QuartzCore 0x28ab4d79 <redacted> + 352
12 QuartzCore 0x28ab4c09 <redacted> + …
Run Code Online (Sandbox Code Playgroud) ios9 ×2
xcode7 ×2
autolayout ×1
ios ×1
iphone ×1
macos ×1
objective-c ×1
swift ×1
xcode7-beta4 ×1