Apple says:

Important: Instances of ABAddressBookRef can not be used by multiple threads. Each thread must make its own instance.

But why?

I know that some particular class or operations must be done in main thread.

And I know some objects are not thread-safe (which means it would cause problem if these objects are accessed by two different threads concurrently).

But, if you can make sure that the the thread-unsafe objects are accessed by only one thread at any moment, then there should be no problem.

Do I understand correctly thus far?

What I can't understand is, Why would some objects like ABAddressbookRef need to be created for each thread? Why would Apple say something like this? If it's just that it's thread-unsafe, Apple can says it's thread-unsafe, be careful when handling it. But why is there a need to create one for each thread? Is there any reason that I don't know?

Does the implementation of ABAddressbookRef rely on the thread which created it?

PS: I remember that Core Data also says ManagedObjectContext need to be creates for each thread which uses it.

Edit
Report