Устранить потенциальные утечки памяти - PullRequest
0 голосов
/ 25 января 2012

Я получаю следующие утечки памяти после запуска инструмента анализа в xcode

//Getting memeory leak warning here "Potential leak of an object allocated and stored into 'phones'
ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);

//Getting potential leak error for line below
if (ABMultiValueGetCount(ABRecordCopyValue(ref, kABPersonPhoneProperty))!=0)
{
    //Getting potential leak error for line below
    CFStringRef pNumber = ABMultiValueCopyValueAtIndex(phones,0);
    phoneNumber = [NSString stringWithFormat:@"%@", (NSString *)pNumber];
    NSString *contactFirstLast = [NSString stringWithFormat: @"%@ %@", firstName, lastName];
}

Как я могу устранить эти утечки?

Ответы [ 2 ]

5 голосов
/ 25 января 2012
ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);

if (ABMultiValueGetCount(phones) != 0)
{
    CFStringRef pNumber = ABMultiValueCopyValueAtIndex(phones,0);
    phoneNumber = [NSString stringWithFormat:@"%@", (NSString *)pNumber];
    NSString *contactFirstLast = [NSString stringWithFormat: @"%@ %@", firstName, lastName];
    CFRelease(pNumber);
}
CFRelease(phones);
3 голосов
/ 25 января 2012

Поскольку pNumber скопировано, вам необходимо разблокировать его: CFRelease(pNumber).

Вам необходимо повторить ваше условие if, чтобы оно использовало phones, а затем отпустить phones.

...