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