Speicherverwaltung bei der Verwendung von CFStrings von de Address
-
27-09-2019 - |
Frage
Ich bin Datensätze aus dem Adressbuch mit dem Apple bereitgestellt API zu lesen.
ich noch immer meinen Kopf um die Speicherverwaltung und so CFStrings
verwechselst mich im Moment.
Dies ist, wie ich die Eigenschaften bin immer:
//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 zu schätzen wissen, dass auch mir geholfen, besser zu verstehen, Speicherverwaltung oder dass Punkte mich in die richtige Richtung.
Danke!
Lösung
Als Faustregel für Core Foundation ist, dass alle Funktionen, die Copy
oder Create
in ihrem Namen enthalten wird ein Objekt zurückgeben, dass Sie für die Freigabe verantwortlich sind. Apples