Ich bin ratlos.Das Lesen der E-Mail-Adresse von Kontakten schlägt mit seltsamer Speicherproblem
Ich versuche eine Liste aller E-Mail-Adressen zu erhalten, die eine Person hat. Ich benutze die ABPeoplePickerNavigationController
, um die Person auszuwählen, die alles in Ordnung scheint. Ich gründe meine
ABRecordRef personDealingWith;
vom person
Argument
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
und alles scheint bis zu diesem Punkt fein auf. Wenn der folgende Code zum ersten Mal ausgeführt wird, ist alles in Ordnung. Wenn später ausgeführt, kann ich Probleme bekommen. Erstens, der Code:
Wenn kompiliert wie geschrieben, sind keine Fehler oder statische Analyse Probleme. Dieser stürzt mit einem
*** -[Not A Type retain]: message sent to deallocated instance 0x4e9dc60
Fehler.
Aber warten Sie, es gibt mehr! Ich kann es auf zwei Arten beheben.
Erstens kann ich den NSLog an der Spitze der Funktion auskommentieren. Ich bekomme ein Leck von der NSLog ABRecordCopyValue
jedes Mal durch, aber der Code scheint gut zu laufen.
Auch kann ich die
CFRelease(multi);
am Ende auf Kommentar, die genau dasselbe tun. Statische Kompilierungsfehler, aber laufender Code.
Also ohne ein Leck, stürzt diese Funktion ab. Um einen Unfall zu verhindern, muss ich die Erinnerung bluten. Keine ist eine großartige Lösung.
Kann jemand darauf hinweisen, was vor sich geht?