Зачем нужно создавать ABAddressbookRef для каждого потока?

Apple говорит:

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

Но почему?

Я знаю, что определенный класс или операции должны выполняться в основном потоке.

И я знаю, что некоторые объекты не являются потокобезопасными (что означает, что это может вызвать проблемы, если к этим объектам обращаются одновременно два разных потока).

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

Правильно ли я понял?

Я не могу понять, зачем нужно создавать такие объекты, как ABAddressbookRef, для каждого потока? Почему Apple сказала что-то подобное? Если это просто небезопасно для потоков, Apple может сказать, что это небезопасно для потоков, будьте осторожны при обращении с ними. Но зачем создавать по одному для каждого потока? Есть ли причина, по которой я не знаю?

Зависит ли реализация ABAddressbookRef от потока, который его создал?

PS: Я помню, что в Core Data также говорится, что ManagedObjectContext должен быть создан для каждого потока, который его использует .

9
задан TRiG 27 August 2013 в 15:23
поделиться