сбой приложения при использовании kABPersinPhoneProperty - PullRequest
0 голосов
/ 02 марта 2011

Я пытаюсь получить весь номер телефона из телефонной книги iPhone. Но мое приложение вылетает, как только я пытаюсь получить число, используя kABPersonPhoneProperty. Фрагмент кода здесь

ABAddressBookRef addressBook = ABAddressBookCreate(); 
NSMutableArray *allPeople = (NSMutableArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); 
int nPeople = ABAddressBookGetPersonCount(addressBook); 
CFRelease(addressBook);

for(int i=0; i < nPeople; i++ ){

    ABRecordRef person = [allPeople objectAtIndex:i];
    NSString *name = @"";
    CFTypeRef fName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
    CFTypeRef lName = ABRecordCopyValue(person, kABPersonLastNameProperty);
    ABMultiValueRef multi = ABRecordCopyValue(person , kABPersonPhoneProperty);
    NSString *number = (NSString *)ABMultiValueCopyValueAtIndex(multi, 0);

    if ([number length] > 0) {
        if(fName != NULL)
        {
            if (lName != NULL) {
                name = [[NSString stringWithFormat:@"%@", fName] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
            }
            else {
                name = [[NSString stringWithFormat:@"%@", fName] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
            }
            NSLog(@"Number==>%@ ",number);
        }
    }
    if (fName != NULL) {
        CFRelease(fName);
    }
    if (lName != NULL) {
        CFRelease(lName);
    }
    if (multi != NULL) {
        CFRelease(multi);
    }
}

[allPeople release];

Я не могу понять ошибку в этом. Я также выпускаю все, даже тогда, это не работает гладко.

Я даже получаю потенциальную утечку памяти при выполнении сборки и анализа для части кода

ABMultiValueRef multi = ABRecordCopyValue(person , kABPersonPhoneProperty);
    NSLog(@"Number===>%d" , ABMultiValueGetCount(multi));

Пожалуйста, помогите мне прийти.

Любая помощь будет принята с благодарностью.

Заранее спасибо

1 Ответ

0 голосов
/ 04 марта 2011

Спасибо за ответ. Я выяснил решение проблемы здесь. Я не выпускал числовую переменную, думая, что ссылка была передана как ссылка, но она копируется в возвращаемое местоположение, поэтому необходимо использовать номер после использования.

еще раз спасибо за все ответы !!

...