Sto leggendo l'articolo Dancing in the Debugger — A Waltz with LLDB. E sto provando il comando thread return
con Swift 2.2 e Swift 3.0.Il comando 'thread return' di LLDB emette un errore in una funzione Swift
Il mio codice è piuttosto semplice:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let resust = test()
print(resust)
}
func test() -> Bool {
return true
}
}
e ho aggiunto un punto di interruzione all'inizio della funzione test()
con un'azione thread return false
. Tuttavia, dopo il comando + R, il mio programma si ferma al punto di interruzione come previsto, ma con il seguente errore:
"errore: Errore di ritorno dal frame 0 del thread 1: supportiamo solo l'impostazione di tipi interi semplici e di tipo float al momento .."
Ecco uno screenshot:
poi ho provato lo stesso nel codice Objective-C; tutto va bene.
Swift 'Bool' s sono implementati come una struct, quindi non è un "simple integer and float return type". Funziona in ObjC perché un ObjC 'BOOL' è solo un typedef di un tipo primitivo. – dan
Ho provato 'thread return 10 (o altro numero)' come azione, tuttavia il programma si è fermato ancora con lo stesso errore. :( – oneMortale
Forse è implicitamente convertito in valore booleano poiché i contenitori Swift sono sicuri per il tipo? – Leviathlon