Meine App wurde kürzlich veröffentlicht, aber es unterstützt iOS 8.2.Segmentierte Steuerung addTarget() Absturz-App unter iOS 9.0
Unter iOS 9.0 stürzt das Tippen auf ein segmentiertes Steuerelement, das programmgesteuert hinzugefügt wurde, leider die App ab, ohne dass eine Fehlermeldung in der Konsole angezeigt wird.
Ich glaube, dass die Linie, wo das Ziel hinzugefügt wird, kann das Problem verursachen:
Die folgende Zeile in der init gesetzt wird() meine benutzerdefinierte Zelle, die segmentierte Kontrolle ist eine Instanz var und ruft eine Methode in seine übergeordnete Ansicht Controller
segmentedControl.addTarget(ListViewController(), action: #selector(ListViewController.segmentedControlToggled(segmentedControl:)), for: .valueChanged)
Auch dies funktioniert wie erwartet bis iOS 9.0.
Das Setup funktioniert gut, es stürzt nur ab, wenn das segmentierte Steuerelement angetippt wird.
Sollte es eine andere Syntax für den Selektor geben?
Vielen Dank für Anregungen!
Vielen Dank, Cristik, das habe ich übersehen. Ich habe es geändert und es hat das Problem behoben! Ich bin jedoch immer noch verwirrt darüber, warum dies in jeder Version über 8.4 funktioniert, aber nicht darunter. – nontomatic
@nontomatic Es kann sein, dass das Ziel von anderen Objekten gefangen (beibehalten) wird, die es indirekt am Leben erhalten. Und iOS 8.3 und darunter haben diese Objekte nicht. Grundsätzlich funktioniert Ihre App in 8,4 und höher aufgrund einiger Implementierungsdetails von UIKit, aber da diese außerhalb Ihrer Kontrolle liegen, behalten Sie besser eine starke Referenz für sich. – Cristik
Danke für das Follow-up, das macht Sinn, danke! – nontomatic