我的应用程序中发生了一些有点大量的字符串大小计算(每个都需要接近500毫秒,当用户在我的应用程序中滚动到新的“页面”时会发生(如天气应用程序)。仅延迟每页发生一次,因为计算只需要运行一次(甚至可以缓存以用于具有相同数据的后续启动)。
无论如何,我仍然不想阻止这类工作的UI,因为我使用线程尖叫,但我知道UIKit并不打算从其他线程中使用。 (我知道NSString不是UIKit的一部分,但字符串大小调整方法是UIKitAdditions的一部分......)
那我该怎么做呢?什么是不阻止UI并安全地阻止UI的最佳方法?
答案 0 :(得分:3)
我总是在背景线程上使用-sizeWithFont
和朋友来计算单元格高度等。它运行得很好。但是,由于iOS 6.0,它会导致间歇crashes。希望这些将被修复,因为它是在后台计算UI布局的基本性能优化。
答案 1 :(得分:2)
我可能错了,但我相信禁止在其他线程中使用UIKit与GUI工作的一般方式(单线程)有关,通常只适用于GUI本身受影响的情况。
sizeWithFont:
方法实际上并不影响GUI,所以我认为在另一个线程中调用它不会有问题。
也许一个对这种方法在幕后工作方式有更多经验的iPhone人可以证实我的想法或让我直截了当。
答案 2 :(得分:2)