更新时间:2022-12-09 11:18:50
让我们确定导致自动布局引擎损坏的确切执行路径。为此,您需要将符号断点添加到以下内容:
Let's identify exact execution path which leads to auto layout engine corruption. For this you need to add symbolic breakpoint to following:
+[NSException raise:format:]
您可以这样做:
然后:
之后,一旦你的应用程序卡在断点上,请抓住并共享堆栈跟踪。您可以使用lldb控制台执行此操作:
After that once your app get stuck on the breakpoint, please grab and share the stack trace. You can do this using lldb console:
(lldb) bt
* thread #4: tid = 0x2bbc48, 0x000000010ba5ebf0 CoreFoundation`+[NSException raise:format:], queue = 'com.apple.root.default-qos', stop reason = breakpoint 1.1
* frame #0: 0x000000010ba5ebf0 CoreFoundation`+[NSException raise:format:]
frame #1: 0x0000000108dd5b6b Foundation`_AssertAutolayoutOnMainThreadOnly + 79
frame #2: 0x0000000108dd5a62 Foundation`-[NSISEngine _optimizeWithoutRebuilding] + 49
frame #3: 0x0000000108c34c0f Foundation`-[NSISEngine optimize] + 46
frame #4: 0x0000000108c3b875 Foundation`-[NSISEngine constraintDidChangeSuchThatMarker:shouldBeReplacedByMarkerPlusDelta:] + 313
frame #5: 0x0000000108c3b6f2 Foundation`-[NSISEngine tryToChangeConstraintSuchThatMarker:isReplacedByMarkerPlusDelta:undoHandler:] + 440
frame #6: 0x0000000108c27715 Foundation`-[NSLayoutConstraint _tryToChangeContainerGeometryWithUndoHandler:] + 484
frame #7: 0x0000000108c27274 Foundation`-[NSLayoutConstraint _setSymbolicConstant:constant:] + 422
frame #8: 0x0000000108ac35d5 iosapp`ViewController.(self=0x00007fe86a6abc80) -> ()).(closure #1) + 133 at ViewController.swift:26
frame #9: 0x0000000108ac3627 iosapp`thunk + 39 at ViewController.swift:0
frame #10: 0x000000010c775d9d libdispatch.dylib`_dispatch_call_block_and_release + 12
frame #11: 0x000000010c7963eb libdispatch.dylib`_dispatch_client_callout + 8
frame #12: 0x000000010c77eb2f libdispatch.dylib`_dispatch_root_queue_drain + 1829
frame #13: 0x000000010c77e405 libdispatch.dylib`_dispatch_worker_thread3 + 111
frame #14: 0x000000010cad34de libsystem_pthread.dylib`_pthread_wqthread + 1129
frame #15: 0x000000010cad1341 libsystem_pthread.dylib`start_wqthread + 13
(lldb)
完成此操作后,我们可以确定导致问题的确切位置。
Once you've done this, we can identify exact place which causes the issue.