我正在尝试访问iPad的地址簿电子邮件。
守则的部分是:
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
ABRecordRef recordRef = ABAddressBookCopyDefaultSource(addressBookRef);
CFArrayRef arrayRef = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBookRef, recordRef, kABPersonSortByFirstName);
for(int i = 0;i<ABAddressBookGetPersonCount(addressBookRef);i++)
{
ABRecordRef ref = CFArrayGetValueAtIndex(arrayRef, i);
ABMultiValueRef emails = ABRecordCopyValue(ref, kABPersonEmailProperty);
.
.
.
.这起事故只能在客户端iPad上才能重现。我们试图复制崩溃,但它没有发生。
在分析了调试构建之后,我们了解到在"ABMultiValueRef emails = ABRecordCopyValue(ref,kABPersonEmailProperty)“行中发生了崩溃。坠机并不是每次都会发生。它在2-3次尝试访问addressBook电子邮件时发生一次.只为客户。
我怀疑"ABRecordRef ref = CFArrayGetValueAtIndex(arrayRef,i)“可能为零,也可能为空。但在何种情况下,这可能是零或空?
谁能帮我知道坠机的原因。
发布于 2014-09-09 05:45:14
原因可能是ABAddressBookGetPersonCount返回地址簿中所有人员的数量,而ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering只返回一个源的所有人员,并且他们的人数可能不同。另外,我建议您检查下面这样的错误。当然,您还必须对任何返回的CF对象进行CFRelease。
CFErrorRef error = nil;
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, &error);
if (addressBookRef != nil) {
ABRecordRef recordRef = ABAddressBookCopyDefaultSource(addressBookRef);
CFArrayRef arrayRef = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBookRef, recordRef, kABPersonSortByFirstName);
const unsigned int nrAllPeopleInSource = (unsigned int)CFArrayGetCount (arrayRef);
if (arrayRef != nil) {
// for(int i = 0;i<ABAddressBookGetPersonCount(addressBookRef);i++)
/*
ABAddressBookGetPersonCount returns the number of all people in the address book, whereas
ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering returns all people of only 1 source, and their number might be different.
*/
for(int i = 0;i<nrAllPeopleInSource;i++)
{
ABRecordRef ref = CFArrayGetValueAtIndex(arrayRef, i);
ABMultiValueRef emails = ABRecordCopyValue(ref, kABPersonEmailProperty);
// ... further code
}
} else {
// no person found
}
} else {
// addressbook could not be opened, lookup error
}https://stackoverflow.com/questions/25736937
复制相似问题