ios - UIFont线程安全吗?

标签 ios multithreading cocoa-touch thread-safety

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

问题是我正在这样做,并且我在 [NSString sizeWithFont:] 中遇到了随机崩溃,并开始思考也许我不应该使用 UIFont 从主运行循环之外?

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

You do not create UIFont objects using the alloc and init methods. Instead, you use class methods of UIFont to look up and retrieve the desired font object.

上面的简介听起来像 UIFont 有一个实例缓存存储在某处,因此从实异常(exception)部使用 UIFont 对象可能不是一个好主意可能会无意中被多个线程使用并可能导致问题。哎呀,UIFont实例缓存甚至可能成为线程争用的来源。

任何人都可以阐明这一点(带有可归因的链接/证据)吗?

谢谢

最佳答案

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

但是如果您想在单独的线程中创建 UIFont 实例,您可以自由地执行此操作。 Apple 文档称 UIFont 仅向您提供静态方法。

关于ios - UIFont线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817240/

相关文章:

ios - map 查看 :didSelectAnnotationView gets fired only once

ios - 'default' 对 UITextInputTrait 常量的真正含义是什么

cocoa-touch - UILabel 文本在更新时重叠?

ios - 在 Swift 中如何在 GCD 主线程上调用带参数的方法?

ios - 我可以在 Xcode 中更改背景颜色时保持 UI 元素可访问吗?

ios - 在使用 FIRDatabase 之前必须调用 FIRApp.configure()。错误,即使我已经调用了它

multithreading - 搞乱线程计时的工具?

c# - 为什么有时 Task 比 Thread 慢很多?

ios - 核心音频渲染线程和线程信号

ios - iOS 中的图像幻灯片自定义控件