@atomic
гарантирует, что ценность, которую вы получите, не будет тарабарщиной. Возможная ситуация - прочитать заданное значение из одного потока и установить его значение из другого. Затем ключевое слово @atomic
гарантирует, что вы получите целое значение. Теперь важно то, что ценность, которую вы получаете, не гарантируется тем, что было установлено совсем недавно.
Вторая часть вашего вопроса, касающаяся прецедента, является чисто косвенным, в зависимости от реализации намерений. Например, если у вас есть какое-то временное обновление в списке каждую секунду или около того, вы можете использовать атомный, чтобы убедиться, что вы получите целые значения, а таймер, который обновляет ваш список, может гарантировать, что у вас будут последние данные на экране или под капотом в какой-то неявной логике.
EDIT: После замечания от @Rob я увидел необходимость перефразировать последнюю часть моего ответа. В большинстве случаев atomic
недостаточно, чтобы выполнить эту работу. И есть потребность в лучшем решении, например @synchronized
.
Когда вы говорите '@ atomic', вы имеете в виду объявление атомного свойства (например,' @property (atomic, strong) NSString * string; ')? – Rob
@Rob Да, я имею в виду это. – tofucodes