In einer Unterklasse von NSManagedObject
wird meine überschriebene Implementierung von willTurnIntoFault
zweimal aufgerufen, wenn Code rückgängig gemacht wird, der das betreffende Objekt ursprünglich erstellt hat. Dies führt zu einem Absturz beim Versuch, die Registrierung für KVO auf einem Schlüsselpfad doppelt aufzuheben.willTurnIntoFault wird mehr als einmal aufgerufen, was zum Absturz führt
Die Apple-Dokumente sagen, dass dies der richtige Ort ist, um sich für KVO abzumelden.
Ein bisschen Kontext - die Rückgängig-Operation beinhaltet das Entfernen der entsprechenden Ansicht des Modells aus seiner Superansicht. Die Ansicht behält ihr Modell bei.
Also meine Frage ist: welche Art von Programmierfehlern in willTurnIntoFault
dazu aufgerufen, zweimal in einer Unterklasse von NSManagedObject
führen kann?
Hinweis: Zuvor hatte ich in dieser Klasse dealloc
überschrieben, habe aber inzwischen erkannt, dass dies für Unterklassen von NSManagedObject nicht empfohlen wird. Ich habe seitdem diesen Code in -didTurnIntoFault
verschoben. Ich übergehe derzeit keine anderen Methoden, die laut Apple-Dokument nicht überschrieben werden sollten.
Gute Beobachtung (wenn auch von der Schule der harten Schläge). –