在ios3(3.1.2及更高版本)下,线程访问下列属性是否安全?
谢谢
发布于 2011-05-29 03:02:46
这些属性都声明为nonatomic,这意味着它们没有多线程访问安全措施。当然,欢迎您在多个线程上访问这些属性,但是这样做会给您带来危险。
这是关于这个的文档。如果属性是在没有nonatomic的情况下声明的,那么在获取和设置值时将使用一个锁,确保每次只有一个线程访问该值。正如您可能预期的那样,这会对性能造成轻微的损失。当一个属性声明为nonatomic时,它仅仅意味着不使用任何锁。欢迎从任何您喜欢的线程获取和设置属性值。但是,与任何多线程值访问一样,线程可能会对该属性发生争用,这可能(在某些情况下)导致未定义的行为。
然而,通常情况下,你不必过多地担心这一点。这实际上只适用于其值可以从多个线程设置的属性。您感兴趣的属性(UIImage.size、UIImage.CGImage、UIColor.CGColor)都声明为readonly,这意味着在同时或以其他方式从多个线程访问这些值时没有什么可担心的。
https://stackoverflow.com/questions/6165599
复制相似问题