0

Я создал одноэлементный класс, который обращается к хранилищу данных и возвращает объект, представляющий объект Core Data. Это нормально в обычном потоке, но я заинтересован в доступе к этому методу singleton из другого класса, работающего на фоновом потоке, поскольку фоновый поток будет работать со своей собственной копией Контекста управляемого объекта.Singleton DataStore on Background Thread

При попытке вызвать одиночный элемент из фонового потока мне нужно создать новый экземпляр синглтона и передать копию фонового потока контекста управляемого объекта или я могу безопасно получить доступ к методу singleton и разрешить его использовать общий контекст управляемого объекта, который он получает из делегата приложения, пожалуйста?

+0

«свежий экземпляр синглтона» Как это должно произойти? – Abizern

+0

Исследуя одноэлемент через событие init, он дает вам не одиночную копию –

+0

. Тогда в чем смысл синглтона? Если вы собираетесь просто создавать свои собственные, когда захотите - в чем смысл одиночного звонка? – Abizern

ответ

2

Попросите класс менеджера данных сделать все вызовы соответствующих основных данных с performBlock: или performBlock:andWait:

Таким образом, звонки будут всегда быть в теме безопасным способом.

Лично я обычно пишу свой диспетчер данных, чтобы он вызывался в основном потоке, и он заботится о дальнейших вызовах по любому потоку.

+0

Если вы выполняете его в основном потоке, вы получаете блокировку пользовательского интерфейса? –

+0

Нет, если диспетчер данных затем выполняет фактические вызовы в фоновом потоке. Я хочу сказать, что у вас есть объект диспетчера данных. Это должно быть до этого объекта для выполнения его операций с фоном на передних потоках, как наиболее эффективно. – Abizern

+0

Буду честным. Я никогда не рассматривал этот подход. В настоящее время я запускаю фоновый поток из контроллера представления и вызываю диспетчер данных из этого. Я благодарю вас за ваш совет, мне потребуется время, чтобы переварить эту идею и оценить ее, поэтому я буду отмечать ваш ответ как правильный ответ и уйти и подумать об этом. Спасибо . –