2015-05-16 4 views
1

Можно ли инициализировать NSManagedContext в одном потоке, а затем передать его в другой поток, где вы вставляете/извлекаете внутри performBlock:?Передача NSManagedObjectContext между потоками

Так https://stackoverflow.com/a/12876800/2645683 упоминает performBlock: и относится к моему вопросу, но его недостаточно. Он не объясняет ничего о потоке, который создал контекст, и поток, который выполняет блок, и факт, что это будут разные потоки.

Ответа на этот вопрос https://stackoverflow.com/a/12874637/2645683 кажется устаревшим. Поскольку вы не можете управлять контекстом для потока и использовать performBlock:, потому что блок может выполняться в разных потоках.

+0

Возможный дубликат [Основные данные - совместное использование NSManagedObjects среди нескольких потоков] (http://stackoverflow.com/questions/12874492/core-data-sharing-nsmanagedobjects-among-multiple-threads) –

+1

@ DanielCompton Nah, он имеет более конкретная проблема, и принятый ответ кажется устаревшим. – Maq

+0

Инициализация 'NSManagedObjectContext' является относительно« легкой »операцией, почему вам нужно делать это в разных потоках? –

ответ

1

Можно ли инициализировать NSManagedContext в одном потоке, а затем передать его в другой поток, где вы вставляете/извлекаете внутри performBlock:?

Это безопасно, если вы все, что прикасается Core Data внутри performBlock: вызова. Вставки и выборки, конечно. Но также в любое время, когда вы вообще прикасаетесь к управляемому объекту, включая использование значений свойств объекта, который вы уже выбрали.

Вы упоминаете, что «... вы косяк удалось контекст для каждого потока и использовать performBlock: ...» Это не true-- вы можете иметь столько контекстами управляемого объекта, как вам нужно, и использовать performBlock: с ними ,

+0

Спасибо за ответ. Об этом контексте в потоке: executeBlock будет запускать блок (со вставками, выборками ...) в потоке, который отличается от потока, который инициализировал контекст. Таким образом, будет больше одного потока, который использует контекст. – Maq