注意:这个问题与
Warn on calls to UIKit from background threads有关,但没有给出以下两种方法的答案.
我有一个应用程序屏幕快速闪烁的问题.我以前已经有了这个问题,这是因为在主线程之外更新UI元素.
所以我把很多地方放了下面的代码:
assertMainThread();
这是:
#define assertMainThread() NSAssert([NSThread isMainThread],@"Method called using a thread other than main!")
当然,我不能用assertMainThread()覆盖整个代码,因为有很多地方,一些代码以合法的方式被背景GCD队列使用.
我看了很多地方,但是找不到XCode或者LLDB在主线程之外更新UI元素的方式.我以为可以使用符号断点或其他一些机制来破坏UIKit中常见的方法在主线程之外调用的地方,但是找不到方法.
我还以为UIKit可以在运行时发出这样的呼叫吗?或者至少给我们一些帮助调试这些问题的工具.
我看过的另一种方法(但没有尝试)是使用一些代码覆盖技术,并尝试在视觉上在代码的什么位置提取什么线程运行,但没有去那条路线.
你有什么想法来解决这个问题吗?