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