ios – 检测主线程外的UI动作

注意:这个问题与 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可以在运行时发出这样的呼叫吗?或者至少给我们一些帮助调试这些问题的工具.

我看过的另一种方法(但没有尝试)是使用一些代码覆盖技术,并尝试在视觉上在代码的什么位置提取什么线程运行,但没有去那条路线.

你有什么想法来解决这个问题吗?

解决方法

替代方案,基于steipete的要点的Xcode方式解决方案 – 象征性断点:

您可以在任何UIKit类中轻松添加其他方法的断点,例如 – [UIView setNeedsDisplay]等.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...