Ich lese Datensätze aus dem AddressBook mit der Apple bereitgestellten API.Speicherverwaltung bei Verwendung von CFStrings von de AddressBook
Ich bekomme immer noch meinen Kopf um Speicherverwaltung und so sind CFStrings
mich im Moment verwirrend. Diese
ist, wie erhalte ich die Eigenschaften:
//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);
Danach habe ich die Werte verwenden, die einzige Sache ist, dass ich weiß nicht, ob ich sie lösen soll oder nicht.
Ich würde eine Antwort schätzen, die mir auch geholfen hat, Speicherverwaltung besser zu verstehen oder die mich in die richtige Richtung weist.
Vielen Dank!
Vielen Dank! Nur um klarzustellen, wenn Sie die Umwandlung von CFString zu NSString durchführen, tun Sie [string release] oder CFRelease (string)? – Zebs
Tatsächlich werden sie sich in diesem Fall genau so verhalten, weil CFString und NSString "gebührenfrei überbrückt" sind. Ich würde verwenden, was am klarsten und am leichtesten zu verstehen ist für Ihren Code und wer auch immer es lesen mag. –