多线程联系人同步

时间:2012-08-27 05:43:40

标签: ios multithreading contacts abrecordref

我正在尝试加快将设备上所有联系人的联系人同步到我的应用。目前它在同步联系人时阻止主线程。

我在NSInvocationOperation中添加了单独的联系人设置,并将其添加到NSOperationQueue。

我知道您只能访问主线程中的UI。关于地址簿数据,您无法访问哪些内容?

1 个答案:

答案 0 :(得分:6)

地址簿框架通常可以安全地从后台线程使用,但它们是陷阱。 documentation中提到了重要的警告:

  

重要多个线程无法使用ABAddressBookRef的实例。每个线程都必须创建自己的实例。

  

重要无法安全地跨线程传递记录对象。相反,您应该传递相应的记录标识符。有关详细信息,请参阅“使用记录标识符”。

请注意,仅仅因为NSInvocationOperation位于同一个NSOperationQueue,并不能保证它们会在同一个线程上执行。