Управление памятью при использовании CFStrings из de AddressBook - PullRequest
0 голосов
/ 22 ноября 2010

Я читаю записи из адресной книги, используя предоставленный 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);

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

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

Спасибо!

1 Ответ

5 голосов
/ 22 ноября 2010

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

...