一段时间以来,我一直在使用 iPhone 的 AddressBook api。但是进行一些重构以提高应用程序性能我决定“重用”由 AddressBookCreate 返回的 ABAddressBookRef,因为我注意到这样做有很大的性能改进。但是,我现在随机收到 EXEC_BAD_ACCESS 错误,我认为原因在于 iPhone 参考实现中的这个“警告”:http: //developer.apple.com/iphone/library/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/300 -BasicObjects/BasicObjects.html#//apple_ref/doc/uid/TP40007744-CH3-SW1
重要提示:ABAddressBookRef 的实例不能被多个线程使用。每个线程必须通过调用 ABAddressBookCreate 创建自己的实例。
现在,我认为这只是意味着它不是线程安全的,所以我必须同步对 API 的访问,但也许我错了,还有其他一些原因,多线程搞乱了数据结构?
有人可以确认它是否确实是线程安全问题(所以 @synchronize 应该可以工作)还是其他问题?
干杯