我写了一个小定义叫做ensureInMainThread(我经常使用它)。然而,我不确定哪些用户界面方法需要在主线程上调用。例如
setNeedsDisplay
和setNeedsLayout
?在iOS 5.x中,需要在主线程上调用的方法有什么规则?这些问题是相关的(一些低质量的问题和答案,以及一些非常具体的情况),但我想要一个全面的、单一的好答案:
setNeedsDisplay
和setNeedsLayout
,以及是否可以安全地从另一个线程调整UILabel
上的字符串? - Dan Rosenstark-setNeedsDisplay
是安全的,因为它涉及到在上下文中进行绘制的保护措施,但我不确定-setNeedsLayout
是否安全。我认为后者可能不安全,因为它不涉及绘图,而是涉及视图和图层的定位。我认为UILabel的文本绘制应该是安全的,但我自己还没有测试过。 - Brad Larson