0

私はこのコードを持っています:

- (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リリース]が機能しません。それをnilに設定しても、それでも文句を言います。

助けてくれてありがとう

4

1 に答える 1

2

CFRelease 関数を使用して、ABMultiValueRef 変数を解放します。

...
if (phoneNumberProperty)
    CFRelease(phoneNumberProperty);
于 2012-09-28T15:34:09.353 に答える