我正在尝试加快将设备上所有联系人的联系人同步到我的应用。目前它在同步联系人时阻止主线程。
我在NSInvocationOperation中添加了单独的联系人设置,并将其添加到NSOperationQueue。
我知道您只能访问主线程中的UI。关于地址簿数据,您无法访问哪些内容?
答案 0 :(得分:6)
地址簿框架通常可以安全地从后台线程使用,但它们是陷阱。 documentation中提到了重要的警告:
重要多个线程无法使用ABAddressBookRef的实例。每个线程都必须创建自己的实例。
和
重要无法安全地跨线程传递记录对象。相反,您应该传递相应的记录标识符。有关详细信息,请参阅“使用记录标识符”。
请注意,仅仅因为NSInvocationOperation
位于同一个NSOperationQueue
,并不能保证它们会在同一个线程上执行。