Swift Xcode调试器不';t显示某些变量的值,具体取决于范围
我正在用Xcode调试一个简单的新MacOSX应用程序。我在viewDidLoad()中有一段代码。viewDidLoad()开头声明的变量(double)在调试区域中正确显示,但for循环中定义的某些double显示空白值。print()语句显示变量具有值。我的代码在th for循环范围内的断点处停止,因此应该显示变量 这种行为有什么原因吗 过于简化的viewController.swift代码示例:Swift Xcode调试器不';t显示某些变量的值,具体取决于范围,swift,xcode,debugging,Swift,Xcode,Debugging,我正在用Xcode调试一个简单的新MacOSX应用程序。我在viewDidLoad()中有一段代码。viewDidLoad()开头声明的变量(double)在调试区域中正确显示,但for循环中定义的某些double显示空白值。print()语句显示变量具有值。我的代码在th for循环范围内的断点处停止,因此应该显示变量 这种行为有什么原因吗 过于简化的viewController.swift代码示例: override func viewDidLoad() { super.viewDi
override func viewDidLoad() {
super.viewDidLoad()
var buyPrice: Double = 0.0
var sellPrice: Double = 0.0
...
for index in 0 ... roc5.percent.count-1 {
...
let closeYearStart = stockPriceArray[currentYearStartIndex].close
let closeYearEnd = stockPriceArray[currentYearEndIndex].close
print("start: \(closeYearStart)")
print("end: \(closeYearEnd)")
...
}
}
当我通过将“closeYearStart”声明移到for循环之外(接近“buyPrice”声明)重新编码时,该Double将显示在调试器中,但在for循环中声明的“closeYearEnd”在调试器中仍然不显示任何值。print语句确认了我期望的值。下图显示了到达断点时调试器中重新编码版本的状态
因此,只要在for循环外声明Double变量,调试器就会按预期显示该值。在for循环中声明的任何Double都不会显示任何值
这个行为向我证实了Xcode不会在for循环中显示变量——只显示for循环之外的变量。for循环中定义的字符串显示正确,这似乎是Double的问题
杂项:
- 我在Catalina 10.15.5下使用Xcode 11.5(11E608c)
- 这是一个调试版本。我没有设置任何优化等
- 我重新启动了Xcode,以及“清理构建文件夹”和删除“派生数据”文件夹