我已经在应用程序上工作了好几个月,并且在过去一两周内出现了一个奇怪的错误。在长时间使用应用程序(20-30分钟)后,我们的许多自定义标签(基于UILabel)停止正确渲染(有些将只显示为空白)。有趣的是,在这种情况下调出键盘显示如下:
我在过去几周内对代码库的各个部分进行了一些调整但没有用,我希望此处有人可能偶然遇到类似的问题和/或可能有一些想法在哪里寻找解决方案。
我们在自定义标签中使用了大量的CoreGraphics调用来呈现一些非常复杂的带注释字符串,并且在另一个线程的后台有相当多的流量来回到服务器。关于内存,我们正在使用ARC,而我们在任何时候都在内存中保留大约5-10Mb的原始数据 - 我无法想象其他任何东西都在扼杀大量内存。
非常感谢任何关于在哪里观看的建议。
答案 0 :(得分:2)
嗯,不是这个确切的问题,但在窗口中可见类似的奇怪东西。它被追踪到从主线程以外的消息传递UIKit。我们最终添加了许多“断言([NSThread isMainThread]);”在我们认为可能在屏幕上绘制的地方,果然,我们找到了有罪的一方。
答案 1 :(得分:2)
关于在不同的线程上进行UI调用的问题,我想我可能会添加这段代码来演示不同的线程如何进行UI调用。
dispatch_sync(dispatch_get_main_queue(), ^{
// Put your UI code here
});
这将确保您的代码在运行循环处理期间在主线程上运行。