Возможная утечка с использованием ABRecord и ARC

У меня есть этот код:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
      shouldContinueAfterSelectingPerson:(ABRecordRef)personRecord
                                property:(ABPropertyID)property
                              identifier:(ABMultiValueIdentifier)identifier
{
    //TODO: release phoneNumberProperty when done
    ABMultiValueRef phoneNumberProperty = ABRecordCopyValue(personRecord, kABPersonPhoneProperty);
    int selectedPhNum = ABMultiValueGetIndexForIdentifier(phoneNumberProperty, identifier);//Turns identifier into index
    NSString *txtNum = (NSString *)CFBridgingRelease(ABMultiValueCopyValueAtIndex(phoneNumberProperty, selectedPhNum));
    //NSLog(@"Selected ph num = %@", txtNum);
    [[self toTextField] setText:txtNum];
    phoneNumberProperty = nil;
    [self dismissViewControllerAnimated:YES completion:NULL];

Статический анализатор сообщает о возможной утечке. Я знаю, что мне нужно освободить phoneNumberProperty, но как? Я использую ARC, поэтому [выпуск phoneNumberProperty] не будет работать. Установив его на ноль, он все еще жалуется.

Спасибо за помощь


person okysabeni    schedule 28.09.2012    source источник


Ответы (1)


Используйте функцию CFRelease, чтобы освободить переменную ABMultiValueRef:

...
if (phoneNumberProperty)
    CFRelease(phoneNumberProperty);
person Vladimir    schedule 28.09.2012
comment
Работает. Спасибо за быстрый ответ - person okysabeni; 28.09.2012