ios3中的uiimage.size,.CGColor,uicolor.CGColor线程安全

时间:2011-05-29 02:23:02

标签: iphone thread-safety uiimage

在ios3(3.1.2及更高版本)下,以下属性线程的访问是否安全?

  1. uiImage.size
  2. uiImage.CGColor - 编辑:oops这应该是uiImage.CGImage
  3. uiColor.CGColor
  4. 谢谢

1 个答案:

答案 0 :(得分:2)

这些属性都声明为nonatomic,这意味着它们没有多线程访问保护措施。当然,欢迎您在多个线程上访问这些属性,但这样做会让您自担风险。


这是关于此的documentation。如果声明的属性没有nonatomic,则在获取和设置值期间将使用锁定,从而保证一次只有一个线程正在访问该值。正如您所料,这会对性能造成轻微影响。当属性声明为nonatomic时,它只是意味着没有使用锁。欢迎您从任何您喜欢的线程中获取和设置属性值。但是,与任何多线程值访问一样,可能会对该属性进行线程争用,这可能(在某些情况下)导致未定义的行为。

通常,但是,您不必太担心这个问题。这实际上仅适用于其值可以从多个线程设置的属性。您感兴趣的属性(UIImage.sizeUIImage.CGImageUIColor.CGColor)都声明为readonly,这意味着从访问这些值时无需担心多个线程,同时或以其他方式。