1

我已经在一个应用程序上工作了几个月了,最近一两周出现了一个奇怪的错误。长时间使用该应用程序(20-30 分钟)后,我们的许多自定义标签(基于 UILabel)停止正确呈现(有些只会显示为空白)。有趣的是,在这种情况下调出键盘会显示以下内容:

在此处输入图像描述

在过去的几周里,我对代码库的各个部分进行了多次调整,但都无济于事,我希望这里的人之前可能偶然发现过类似的问题和/或可能对在哪里寻找有一些想法一个办法。

我们在自定义标签中使用大量 CoreGraphics 调用来渲染一些非常复杂的带注释的字符串,并在另一个线程的后台服务器上来回传输大量流量。关于内存,我们使用 ARC 并且我们在任何时候都在内存中保留大约 5-10Mb 的原始数据 - 我无法想象其他任何东西都会占用大量内存。

任何关于在哪里看的建议将不胜感激。

4

2 回答 2

2

好吧,不是这个确切的问题,而是在窗口中可见的类似的非常奇怪的东西。它被追踪到来自主线程以外的 UIKit 消息传递。我们最终添加了很多“assert([NSThread isMainThread]);” 在我们认为可能会在屏幕上绘制的地方,果然,我们找到了有罪的一方。

于 2012-07-24T17:11:41.570 回答
2

关于在不同线程上进行 UI 调用的主题,我想我可以添加这段代码来演示不同线程如何进行 UI 调用。

dispatch_sync(dispatch_get_main_queue(), ^{
    // Put your UI code here
});

这将确保您的代码在运行循环处理期间在主线程上运行。

于 2012-07-24T17:16:34.210 回答