Неожиданный сбой при использовании поиска телефонных номеров в адресной книге iPhone - PullRequest
2 голосов
/ 03 июня 2010

У меня довольно неожиданный результат со следующим кодом:

ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);

NSLog (@"npeople = %d = %d", nPeople, CFArrayGetCount(people));
for (CFIndex i = 0; i < nPeople; i++)
{
    ABRecordRef record = CFArrayGetValueAtIndex(people,i);
    ABMultiValueRef numbers = ABRecordCopyValue(record, kABPersonPhoneProperty);
    CFIndex count = ABMultiValueGetCount(numbers);
    NSLog (@"%d %d", i, count);
}

Я никогда не достигаю второго NSLog, он вылетает при вызове ABMultiValueGetCount с:

: * - [NSCFString count]: нераспознанный селектор отправлен на экземпляр 0x383e72f4 : * Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «*** - [NSCFString count]: нераспознанный селектор, отправленный экземпляру 0x383e72f4 '

Короче говоря, он ведет себя так, как будто моя переменная "numbers" была строкой NSString. Хотя я написал код выше себя, то же самое можно найти во многих примерах в Интернете. Здесь кто-то замечает что-то не так?

О, а также: происходит сбой только в режиме выпуска (в режиме отладки все в порядке).

1 Ответ

1 голос
/ 03 июня 2010

Я думаю, вам следует сначала проверить возвращаемые значения CFArrayGetValueAtIndex () и ABRecordCopyValue (), чтобы убедиться, что у вас есть реальные значения, а не NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...