Ich frage mich, ob ich irgendwie über einen Fehler gestolpert bin, bei dem das Wischen zum Löschen von UITableViewCells
niemals aufgehoben wird, wenn ihr UITableViewController
funktioniert.
Ich habe meiner benutzerdefinierten Tabellenzelle eine -dealloc-Methode hinzugefügt, die eine Nachricht ausloggt. Wenn ich auf den Navigationscontroller drücke, werden alle 6 Nachrichten abgemeldet.
Wenn ich wische, um einen (oder mehrere) zu löschen, und drücke zurück, werden nur 5 protokolliert. Also logge ich die Zeigeradresse der Zelle aus, die gelöscht wurde, für zukünftige Referenz. Wenn ich jetzt zurückgehe und die Ausführung zu irgendeinem Zeitpunkt pausiere, kann ich die Eingabeaufforderung für die lldb eingeben:
%Vor% Dies sollte freigegeben worden sein! Der x.position
der Zelle ist genau -(tableView.width)
und hidden=YES
. Wie in der Zelle ist noch in der Position, nachdem die Animation beendet ist. Oder vielleicht wird es zur Wiederverwendung in die Warteschlange gestellt? So oder so, es ist für immer da, und es gibt nichts in Apples Dokumentation über das manuelle Zerstören einer Zelle nach dem Aufruf von deleteRowsAtIndexPaths.
Schnelles Proof-of-Concept-Projekt hier: Ссылка
Tags und Links objective-c uitableview ios dealloc