“从后台线程修改布局引擎”的断点

时间:2017-02-02 10:50:05

标签: ios ios-autolayout symbolic-breakpoint

我收到了可怕的警告:

  

此应用程序正在从后台修改autolayout引擎   从主线程访问引擎后的线程。这个可以   导致引擎损坏和奇怪的崩溃。

我知道这意味着什么(以前曾多次询问过)以及如何修复它,或者我应该说我知道,如果我有线索的话我的代码的哪一部分导致它:警告连续多次弹出,并且只有在我没有触摸应用程序一段时间之后。

此外,没有异步操作(我知道),其结论可以触发它。

所以问题是:是否有一个符号断点我可以设置(类似于着名的'不可满足的布局约束')来捕获它?

我已经尝试了this回答(+[NSException raise:format:]上的符号断点)中提供的解决方案,但是对于每个警告,它在以下调用堆栈的某个后台线程上停止了三次:

第一站:

Thread 11
   > 0 +[NSException raise:format:] 
     16 start_wqthread

第二站:

Thread 11
   > 0 objc_exception_throw
     17 start_wqthread

第三站:

Thread 11
   > 0 __cxa_throw
     20 start_wqthread

通过警告登录到控制台的堆栈如下:

Stack:(
    0   CoreFoundation                      0x000000010378834b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x00000001031e921e objc_exception_throw + 48
    2   CoreFoundation                      0x00000001037f1265 +[NSException raise:format:] + 197
    3   Foundation                          0x0000000102ee4320 _AssertAutolayoutOnAllowedThreadsOnly + 180
    4   Foundation                          0x0000000102d05be4 -[NSISEngine withBehaviors:performModifications:] + 31
    5   UIKit                               0x0000000105417a42 -[UIView(UIConstraintBasedLayout) _resetLayoutEngineHostConstraints] + 76
    6   UIKit                               0x0000000104b11317 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1192
    7   QuartzCore                          0x00000001047cfcdc -[CALayer layoutSublayers] + 146
    8   QuartzCore                          0x00000001047c37a0 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
    9   QuartzCore                          0x00000001047c361e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
    10  QuartzCore                          0x000000010475162c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 280
    11  QuartzCore                          0x000000010477e713 _ZN2CA11Transaction6commitEv + 475
    12  QuartzCore                          0x000000010477eb91 _ZN2CA11Transaction14release_threadEPv + 593
    13  libsystem_pthread.dylib             0x0000000107f8e50f _pthread_tsd_cleanup + 544
    14  libsystem_pthread.dylib             0x0000000107f8e249 _pthread_exit + 152
    15  libsystem_pthread.dylib             0x0000000107f8c7cd pthread_attr_getschedpolicy + 0
    16  libsystem_pthread.dylib             0x0000000107f8c1ed start_wqthread + 13
)

...既未提供有关我的代码的许多线索。

0 个答案:

没有答案