Многопоточная синхронизация контактов

Я пытаюсь ускорить синхронизацию контактов всех контактов на устройстве с моим приложением. На данный момент его блокирует основной поток при синхронизации контактов.

Я добавил индивидуальную настройку контакта в NSInvocationOperation и добавил ее в NSOperationQueue.

Я знаю, что вы можете получить доступ только к пользовательскому интерфейсу в основном потоке. К чему вы не можете получить доступ в отношении данных адресной книги?

1 ответ

Решение

Структура адресной книги, как правило, безопасна для использования из фонового потока, но это подводные камни. Важные предостережения упомянуты в документации:

Важные экземпляры ABAddressBookRef не могут использоваться несколькими потоками. Каждый поток должен создать свой собственный экземпляр.

а также

Внимание! Объекты записи нельзя безопасно передавать через потоки. Вместо этого вы должны передать соответствующий идентификатор записи. См. "Использование идентификаторов записи" для получения дополнительной информации.

Обратите внимание, что только потому, что NSInvocationOperation на том же NSOperationQueue не гарантирует, что они будут выполняться в одном потоке.

Другие вопросы по тегам