Это очень интересный вопрос!
Я бы сказал, использовать флаг BOOL
, если вы не используете многопоточность.
Если вы используете многопоточность и нацеливание на 10.6+,Вы должны выполнять все операции с основными данными (включая установку этого флага) в одной и той же параллельной последовательной очереди Grand Central Dispatch (или GCD).
Вы можете настроить эту очередь следующим образом:
dispatch_queue_t dataQueue = dispatch_queue_create("Data Queue", DISPATCH_QUEUE_SERIAL);
Затем вы можете выполнить операции Core Data в этой очереди, используя:
dispatch_async(dataQueue, ^{
//do work here
});
Не забудьте освободить очередь, когда закончите с ней:
dispatch_release(dataQueue);
*Возможно, 1017 * можно использовать в качестве ивара или глобальной переменной, доступ к которой осуществляется с помощью некоторого метода +
.
Все операции, отправляемые в очередь, будут выполняться последовательно (в порядке их отправки), поэтому, если всеотправляется в ту же очередь, у вас не должно быть проблем с безопасностью потоков.
Читайте о Grand Central Dispatch (который я лично считаю действительно классным API) в Руководство по программированию параллелизма .