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

前端之家收集整理的这篇文章主要介绍了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相关文章