iPad의 주소록 전자 메일에 액세스하려고합니다.ABMultiValueRef에서 응용 프로그램이 충돌합니다.
코드의 일부는 다음과 같습니다
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);
.
.
.
.
충돌은 클라이언트 아이 패드 미니에 재현. 우리는 충돌을 재현하려고했지만 그 일은 일어나지 않았습니다.
디버그 빌드를 분석 한 후 "ABMultiValueRef emails = ABRecordCopyValue (ref, kABPersonEmailProperty);"라인에서 충돌이 발생했음을 알게되었습니다. " 매번 충돌이 발생하지 않습니다. 주소록 이메일에 액세스하려고 2-3 번 시도합니다. 클라이언트 전용.
의심되는 항목은 "ABRecordRef ref = CFArrayGetValueAtIndex (arrayRef, i);"입니다. nil 또는 비어있을 수 있습니다. 그러나 어떤 경우에는 이것이 비어 있거나 비어있을 수 있습니까?
어떤 사람이 충돌 사고의 원인인지 알 수 있습니다.
크래시 로그의 내용은 무엇입니까? – n00bProgrammer
@ n00bProgrammer : 죄송합니다. 크래시 로그 양식 클라이언트를받을 수 없습니다. – Raju