Gerenciamento de memória ao usar o CFStrings do De endereço
-
27-09-2019 - |
Pergunta
Estou lendo registros do livro de endereços usando a API fornecida pela Apple.
Eu ainda estou entendendo o gerenciamento de memória e assim CFStrings
estão me confundindo no momento.
É assim que estou recebendo as propriedades:
//Get Basic properties
NSString* firstName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString* lastName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
NSNumber* record = [NSNumber numberWithInt:ABRecordGetRecordID(person)];
//Build Full Name
NSString* fullName=[self fullNameWith:firstName and:lastName];
//Get Phone number and Label
ABMultiValueRef phone = ABRecordCopyValue(person, property);
//Turn identifier into index
CFIndex index = ABMultiValueGetIndexForIdentifier(phone, identifier);
//Get the value and the label using the index
NSString *value =(NSString *)ABMultiValueCopyValueAtIndex(phone, index);
CFStringRef label = ABMultiValueCopyLabelAtIndex(phone, index);
//Get the localized value of hte label
NSString * localizedLabel = (NSString *)ABAddressBookCopyLocalizedLabel(label);
Depois disso, uso os valores, a única coisa é que não sei se devo libertá -los ou não.
Eu apreciaria uma resposta que também me ajudou a entender melhor o gerenciamento de memória ou que me aponta para a direção certa.
Obrigada!
Solução
A regra geral para a fundação Core é que quaisquer funções que incluam Copy
ou Create
Em seu nome, retornará um objeto que você é responsável por lançar. Apple's Guia de gerenciamento de memória para fundação principal Explica isso com um pouco mais de detalhes.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow