Вопрос

Я читаю записи от адресной книги, используя Apple API.

Я все еще получаю голову вокруг управления памятью и так CFStrings Смущает меня в данный момент.

Вот как я получаю свойства:

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

После этого я использую значения, единственное, что я не знаю, должен ли я освободить их или нет.

Я был бы признателен за ответ, который также помог мне лучше понять управление памятью или то, что указывает мне на правильное направление.

Спасибо!

Это было полезно?

Решение

Правило большого пальца для основного фонда заключается в том, что любые функции, которые включают Copy или Create По их имени вернется объект, который вы несете ответственность за выпуску. Apple's. Руководство по управлению памятью для основного фонда объясняет это немного более подробно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top