title: Why would ABAddressbookRef need to be created for each thread?
body: <p>Apple says:</p>
  
  <blockquote>
    <p>￼Important: Instances of ABAddressBookRef can not be used by multiple
    threads. Each thread must make its own instance.</p>
  </blockquote>
  
  <p>But why?</p>
  
  <p>I know that some particular class or operations must be done in main thread.</p>
  
  <p>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).</p>
  
  <p>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.</p>
  
  <p>Do I understand correctly thus far?</p>
  
  <p>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?</p>
  
  <p>Does the implementation of ABAddressbookRef rely on the thread which created it?</p>
  
  <p>PS: I remember that Core Data also says ManagedObjectContext need to be creates for each thread which uses it.</p>