2017-02-03 5 views
0

Mit Swift 3 wird die func tableView(_ tableView: UITableView, cellForRowAt indexPath: @autoclosure @escaping IndexPath) -> UITableViewCell von UITableView aufgerufen. Ich möchte verfolgen, wer diese Funktion aufruft. Soweit ich weiß, wird dies nur dann aufgerufen, wenn eine Zelle angezeigt werden soll. In Stacktrace override internal func tableView(_ tableView: UITableView, numberOfRowsInSection section: @autoclosure @escaping Int) -> Int wird jedoch nicht aufgerufen und es gibt kein Stacktrace. Könnte jemand raten, wo er anfangen soll zu graben? Vielen Dank!cellForRowAtIndexPath wird aufgerufen, aber ohne Stacktrace

Screenshot beigefügt No Stacktrace

+0

Warum denkst du nicht, dass "numberOfSections" (oder meinst du "numberOfRowsInSection") nicht aufgerufen wird? – rmaddy

+0

Ich habe einen Breakpoint in 'numberOfRowsInSection' gesetzt, aber er wurde nie – chlkdst

+0

genannt. Sind Sie sicher, dass er die richtige Signatur hat? Aktualisieren Sie Ihre Frage mit dem entsprechenden Code. – rmaddy

Antwort

1

Standardmäßig sehen Sie nur den Stack-Trace, die Debug-Symbole enthält. Sie werden hier also nicht viele Framework-Interna sehen.

alles, dort zu sehen ist ein kleiner Knopf an der Unterseite der Stack-Trace-Fenster von rechts dritter Position, die ohne Debug-Symbole auch Methoden ermöglichen:

Enable/Disable full stack trace

(In Tatsächlich hängt das von Ihrer Xcode-Version ab, in älteren Versionen gibt es eine Art Slider, der mehr oder weniger Details im Stack-Trace anzeigt.

+0

Ich habe diese Option im Debug Navigator markiert, siehe aktualisiert StackTrace. Immer noch kein Glück. numberOfRowInSection ist nicht einmal im Stacktrace – chlkdst

+1

Sicher ist es nicht. 'numberOfRows: inSection' wird von der Tabellenansicht _before_' cellForRow: atIndexPath' aufgerufen, also sollte es nicht unbedingt im StackTrace sein. –

+0

Yup ich bekomme es jetzt, es ist immer der Fall der 'numberOfRows: inSection' ist im StackTrace. Mein Hauptproblem ist, dass ich nicht weiß, wer den 'cellForRow: atIndexPath' auslöst. – chlkdst

0

Wie @AndreasOetjen erwähnt, ist dies ein normales Verhalten, da die Methode get von einer UIKit Framework-Klasse aufgerufen wird. Der Call-Stack in diesem Framework ist standardmäßig ausgeblendet und kann über die genannten Schaltflächen aktiviert werden.

Verwandte Themen