Czytam artykuł Dancing in the Debugger — A Waltz with LLDB. I próbuję polecenia thread return
z Swift 2.2, a także Swift 3.0.Polecenie 'powrót wątku' LLDB wysyła błąd w funkcji Swift
Mój kod jest dość prosty:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let resust = test()
print(resust)
}
func test() -> Bool {
return true
}
}
i dodałem przerwania na początku funkcji test()
z thread return false
działania. Jednak po poleceniu + R mój program zatrzymuje się w punkcie przerwania zgodnie z oczekiwaniami, ale z następującym błędem:
"błąd: Błąd powrotu z ramki 0 wątku 1: Obsługujemy tylko ustawienie prostych typów zwracanych całkowitych i zmiennoprzecinkowych w chwili obecnej ..”
Poniżej zrzut ekranu:
Potem próbowałem to samo w kodzie Objective-C; wszystko poszło dobrze.
Swift 'Bool' s są zaimplementowane jako struct, więc nie jest to "prosty typ zwracający liczbę całkowitą i zmiennoprzecinkowy". Działa w ObjC, ponieważ "BOOL" ObjC jest typedefem typu pierwotnego. – dan
Próbowałem 'powrotu wątku 10 (lub innej liczby)' jako akcji, jednak program nadal zatrzymywał się z tym samym błędem. :( – oneMortale
Być może jest on niejawnie przekonwertowany na wartość boolowską, ponieważ pojemniki z wątkami Swift są bezpieczne dla typów? – Leviathlon