任何人都可以确认UIFont
(Cocoa-Touch/iOS)是否线程安全?也就是说,在主线程之外的线程中使用它是否安全,但是线程之间不共享实例?UIFont线程安全吗?
问题是,我这样做,我得到了[NSString sizeWithFont:]
随机崩溃,并开始想,也许我不应该从主运行循环外使用UIFont
?
此外Apple's documentation on UIFont
让我怀疑它是否可以从其他线程使用。
您不使用alloc和init方法创建UIFont对象。相反,您使用UIFont的类方法查找并检索所需的字体对象。
上述书籍说明听起来像UIFont
具有存储在某处一个实例的高速缓存,因而它可能不使用UIFont
对象从主线程以外的好主意,因为一个实例可能会无意中被多个线程使用,并且可能会导致问题。哎呀,UIFont
的实例缓存甚至可能是线程争用的来源。
有没有人可以对此有所了解(可归因的链接/证据)?
谢谢
您是否还在这个单独的线程中访问/修改任何UI元素(标签,文本区域...)? – 2012-03-22 08:28:14
不,只用它来测量背景中某些字符串的大小。得到随机崩溃,不知道为什么。无论如何,我已经用NSAttributedString/CTFont所做的等效替换了该实现,并且过去一天中该区域没有发生任何崩溃。 – adib 2012-03-23 00:10:27
有趣的消息。这听起来像一个解决方法:)希望你把它关掉。 – 2012-03-23 08:33:59