我正在后台线程中阅读“地址簿”,我正在使用以下堆栈跟踪获取一些崩溃报告。
0 libsystem_kernel.dylib
__pthread_kill + 8
1 libsystem_c.dylib
abort + 94
2 AppSupport
abortAfterPassingIntegrityCheck + 38
3 AppSupport
runIntegrityCheckAndAbort + 526
4 AppSupport
checkResultWithStatement + 120
5 AppSupport
CPSqliteStatementReset + 60
6 AddressBook
_imageStoreHasFullSizeImageForRecord + 102
7 AddressBook
ABCImageStoreHasImagesForRecordWithFormat + 48
8 AddressBook
ABCImageStoreHasImagesForRecord + 14
9 AddressBook
ABCPersonHasImageDataEntries + 186
10 AddressBook
ABCPersonHasImageData + 10
11 AddressBook
ABPersonHasImageData + 8
12 Brewster ✭ AddressBookHandler.m line 501
-[AddressBookHandler needToImportPhotoContacts] + 50
我无法复制,所以有时只会发生。此代码只是试图查看ABPerson是否有图像。什么可能导致这种情况?
谢谢。
答案 0 :(得分:5)
我看到了同样的问题。这似乎是因为ABAddressBookRef只能由单个线程使用。每个ABAddressBookCreate文档:
重要您必须确保只有一个线程使用ABAddressBookRef的实例。
还有另一篇文章也提到了这个问题:http://blog.byadrian.net/2012/05/05/ios-addressbook-framework-and-gcd/