Apple говорит:
Важно: экземпляры ABAddressBookRef не могут использоваться несколькими потоки. Каждый поток должен создавать свой собственный экземпляр.
Но почему?
Я знаю, что определенный класс или операции должны выполняться в основном потоке.
И я знаю, что некоторые объекты не являются потокобезопасными (что означает, что это может вызвать проблемы, если к этим объектам обращаются одновременно два разных потока).
Но если вы можете убедиться, что небезопасные для потоков объекты доступны только одному потоку в любой момент, тогда не должно быть проблема.
Правильно ли я понял?
Я не могу понять, зачем нужно создавать такие объекты, как ABAddressbookRef, для каждого потока? Почему Apple сказала что-то подобное? Если это просто небезопасно для потоков, Apple может сказать, что это небезопасно для потоков, будьте осторожны при обращении с ними. Но зачем создавать по одному для каждого потока? Есть ли причина, по которой я не знаю?
Зависит ли реализация ABAddressbookRef от потока, который его создал?
PS: Я помню, что в Core Data также говорится, что ManagedObjectContext должен быть создан для каждого потока, который его использует .