【问题标题】:Thread-safe UIKit methods线程安全的 UIKit 方法
【发布时间】:2011-05-22 09:26:26
【问题描述】:

我正在尝试找出在 iOS 4.0 上的 UIKit 中哪些方法(名称!)成为线程安全的。

我搜索了 Apple 的文档,但收效甚微。例如,使用 imageNamed: 创建的UIImage 在其他线程上使用是不安全的(它偶尔会从主线程中丢弃它的CGImage),而imageWithCGImage 可能是(?)。另外,我看到有人声称UIColor 可以安全地用于主线程以外的线程。

对于哪些方法安全哪些不安全,是否有明确的指南?

编辑: 有趣的是 UIKit 类在单独的线程上使用很有趣,例如UIImageUIColor 等。

【问题讨论】:

  • 你怎么知道用 imageNamed: 创建的 UIImages 不安全?你遇到过问题吗?
  • imageNamed:不是线程安全的;在此处查看 Apple 开发人员的评论:devforums.apple.com/message/360659#360659

标签: ios uikit


【解决方案1】:

来自苹果的documentation

注意:在大多数情况下,UIKit 类只能在应用程序的主线程中使用。对于派生自UIResponder 的类或涉及以任何方式操纵应用程序用户界面的类尤其如此。

因此,您真的不应该在后台线程上与 UIKit 中的任何内容进行交互。

【讨论】:

  • 根据 iOS 4 发行说明 (developer.apple.com/library/ios/#releasenotes/General/…):在 UIKit 中绘制到图形上下文现在是线程安全的。具体来说: • 用于访问和操作图形上下文的例程现在可以正确处理驻留在不同线程上的上下文。 • 字符串和图像绘制现在是线程安全的。 • 现在可以安全地在多个线程中使用颜色和字体对象。
猜你喜欢
  • 2013-04-24
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 2013-12-16
  • 1970-01-01
  • 2013-03-31
相关资源
最近更新 更多