Странная ошибка ios 5 в адресной книге - PullRequest
1 голос
/ 07 декабря 2011

Я сделал следующее, чтобы получить информацию о пользователе из адресной книги.

- (ABRecordRef)findRecordNSString *)phoneNumber
{
if (phoneNumber == nil)
return nil;
ABAddressBookRef addressBook = ABAddressBookCreate();

CFArrayRef all = ABAddressBookCopyArrayOfAllPeople(addressBook);

CFIndex n = ABAddressBookGetPersonCount(addressBook);

ABRecordRef record;

//NSLog(@"The Record : %d", record);

int count = 0;

for( int i = 0 ; i < n ; i++ )
{
ABRecordRef ref = CFArrayGetValueAtIndex(all, i);

ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{

CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);

NSString *newPhoneNumber = (NSString *)phoneNumberRef;



if([newPhoneNumber isEqualToStringhoneNumber])
{
//NSLog(@"Phone Ref: %@", phoneNumberRef);
NSLog(@"Record New: %d", ref);
record = ref;

i=(int)n;
count = 1;
}
CFRelease(phoneNumberRef);
[newPhoneNumber release];
}

}
[addressBook release];
return record;
}

, но я получаю сообщение об ошибке при попытке открыть viewController в устройстве ios5, но оно работает в симуляторе и ios4. ошибка:

Program received signal: “EXC_BAD_ACCESS”.
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Can't find dlopen function, so it is not possible to load shared libraries.)

Также после этой ошибки, если я принудительно закрою приложение, дважды нажав кнопку «Домой», а затем выйду вручную, приложение покажет только черный экран.Есть идеи по этому поводу?

1 Ответ

0 голосов
/ 21 февраля 2012

Только что прокомментировал строку

CFIndex n = ABAddressBookGetPersonCount(addressBook); 

И заменил на это, чтобы получить общее количество записей

CFIndex n = CFArrayGetCount(all);

Поскольку счетчик отличается для всех (массив) и для переменной n,

Надеюсь, это поможет и другим.

...