Шаблон контекста? Зачем они нужны Core Data?

Я все еще новичок в Core Data и пытаюсь понять, почему это требует передачи NSManagedObjectContext. Насколько я понимаю, передача контекста необходима для того, чтобы несколько потоков не влияли на один и тот же контекст, но у меня также сложилось впечатление, что этот шаблон иногда считается антипаттерном, как отмечено здесь .

Можно ли теоретически реализовать Core Data потокобезопасным способом, избегая использования этого шаблона? Как другие ORM (например, Ruby ActiveRecord) избегают этого шаблона? Например, CoreData не может реализовать метод сохранения для каждого NSManagedObject, такой как в этом расширении . Эта легкая структура не поддерживает многопоточность, но не могли ли NSManagedObjects использовать какие-то внутренние очереди GCD для ее поддержки с внутренним контекстом, который они не раскрывают?

Извините, если я упустил что-то важное.

5
задан donalbain 24 June 2011 в 16:14
поделиться