【发布时间】:2016-11-18 16:52:51
【问题描述】:
我正在阅读Dancing in the Debugger — A Waltz with LLDB 文章。我正在尝试使用 Swift 2.2 和 Swift 3.0 的 thread return 命令。
我的代码很简单:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let resust = test()
print(resust)
}
func test() -> Bool {
return true
}
}
我在test() 函数的开头添加了一个断点,并带有thread return false 操作。但是,在 command+R 之后,我的程序按预期在断点处停止,但出现以下错误:
“错误:从线程1的第0帧返回错误:我们目前只支持设置简单的整数和浮点返回类型..”
这是一个屏幕截图:
然后我在 Objective-C 代码中尝试了同样的方法;一切顺利。
【问题讨论】:
-
Swift
Bools 被实现为结构,因此它不是“简单的整数和浮点返回类型”。它在 ObjC 中有效,因为 ObjCBOOL只是原始类型的 typedef。 -
我尝试了
thread return 10(or other number)作为操作,但是程序仍然停止并出现同样的错误。 :( -
也许它被隐式转换为布尔值,因为 Swift 线程容器是类型安全的?
-
@Leviathlon 我不知道。