【发布时间】:2017-06-13 05:26:17
【问题描述】:
Xcode 9 似乎报告了很多对 UIApplication 属性的主线程调用。即使 UI 没有更新,这也特别麻烦,因为它会生成默认环境的日志扩展。
4 TestApp 0x0000000101c262e0 __39-[ViewController viewDidLoad]_block_invoke + 196
5 libdispatch.dylib 0x0000000102279654 _dispatch_call_block_and_release + 24
6 libdispatch.dylib 0x0000000102279614 _dispatch_client_callout + 16
7 libdispatch.dylib 0x0000000102289008 _dispatch_queue_serial_drain + 716
8 libdispatch.dylib 0x000000010227ce58 _dispatch_queue_invoke + 340
9 libdispatch.dylib 0x000000010228a1c4 _dispatch_root_queue_drain_deferred_wlh + 412
10 libdispatch.dylib 0x00000001022917fc _dispatch_workloop_worker_thread + 868
11 libsystem_pthread.dylib 0x00000001ac6771e8 _pthread_wqthread + 924
12 libsystem_pthread.dylib 0x00000001ac676e40 start_wqthread + 4
【问题讨论】:
-
你已经省略了这个堆栈跟踪的顶部,它可以告诉我们这是在哪个线程上运行的。我敢打赌这不是主线。例如,如果您从后台线程启动 segue(例如,
URLSession完成闭包),viewDidLoad也不会在主线程上。您需要回溯以查看转换是从哪里开始的,并确认它在主线程上。或者,如果你真的在主线程上运行时得到了这个,我们需要查看允许我们reproduce the log messages 的最少代码量。
标签: ios multithreading ios11 xcode9