UIFont线程安全吗?

时间:2012-03-22 06:04:42

标签: ios multithreading cocoa-touch thread-safety

任何人都可以确认UIFont(Cocoa-Touch / iOS)是否是线程安全的?也就是说,在主线程之外的线程中使用是否安全但是线程之间不共享实例?

问题是我正在这样做而且我在[NSString sizeWithFont:]中遇到随机崩溃并开始认为我不应该在主运行循环之外使用UIFont

此外Apple's documentation on UIFont让我怀疑是否可以从其他线程使用它。

  

您不使用alloc和init方法创建UIFont对象。相反,您使用UIFont的类方法来查找和检索所需的字体对象。

上面的模糊声音如UIFont有一个实例缓存存储在某处,因此从主线程外部使用UIFont对象可能不是一个好主意,因为实例可能会无意中被多个使用线程可能会导致问题。哎呀,UIFont实例缓存甚至可能是线程争用的来源。

有人可以对此进行一些解释(有可归因的链接/证据)吗?

由于

1 个答案:

答案 0 :(得分:2)

rokjarc是对的。如果要更改 UILabel 对象的 font 属性的UI元素字体,则应在主线程中执行此操作。

但是如果你想在单独的线程中创建UIFont实例,你可以自由地做到这一点。 Apple文档说UIFont只为您提供静态方法。