Pregunta

Estoy leyendo los registros de la libreta de direcciones utilizando el API de Apple siempre.

Todavía estoy poniendo mi cabeza en torno a la gestión de memoria y así CFStrings se me confunde en este momento.

Esta es la forma en que estoy recibiendo las propiedades:

//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);

Después de que utilizo los valores, lo único es que no sé si os suelte a ellos o no.

Le agradecería una respuesta que también me ayudó a entender mejor gestión de memoria o que me apunta a la dirección correcta.

Gracias!

¿Fue útil?

Solución

La regla general para la Fundación Core es que cualquiera de las funciones que incluyen Copy o Create en su nombre se devuelven un objeto que son responsables de la liberación. de Apple Guía de gestión de memoria para la Fundación núcleo explica esto en detalle un poco más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top