uiimage.size, .CGColor, uicolor.CGColor безопасность потоков в ios3 - PullRequest
0 голосов
/ 29 мая 2011

Под ios3 (3.1.2 и выше) безопасен ли доступ к следующим свойствам?

  1. uiImage.size
  2. uiImage.CGColor - отредактируйте: упсСпасибо

1 Ответ

2 голосов
/ 29 мая 2011

Все эти свойства объявлены как nonatomic, что означает, что они не имеют средств защиты многопоточного доступа.Вы, конечно, можете получить доступ к этим свойствам в нескольких потоках, но вы делаете это на свой страх и риск.


Вот документация об этом.Если свойства были объявлены без nonatomic, то при получении и установке значения будет использоваться блокировка, гарантирующая, что только один поток получал доступ к значению за один раз.Как и следовало ожидать, это незначительное снижение производительности.Когда свойство объявляется как nonatomic, это просто означает, что блокировка не используется .Вы можете получить и установить значение свойства из любого потока, который вам нравится.Однако, как и в случае любого доступа к многопоточному значению, существует вероятность конфликта потоков из-за этого свойства, которое может (в некоторых случаях) привести к неопределенному поведению.

Обычно Тем не менее, вам не нужно беспокоиться об этом слишком много.Это действительно относится только к свойствам, значения которых могут быть установить из нескольких потоков.Свойства, которые вас интересуют (UIImage.size, UIImage.CGImage, UIColor.CGColor), все объявлены как readonly, что означает, что на самом деле не о чем беспокоиться при доступе к этим значениям из нескольких потоков, одновременно или иным образом.

...