使用断点Swift时查找变量的值

时间:2019-04-28 16:20:17

标签: swift xcode debugging

我有一个简单的测试:

func testAdd(){
        let result = calc.evaluate(op: "+", arg1: 2.0, arg2: 9.0)
        print("result - \(result)")
        XCTAssert(result == 11.0, "Calculator operation failed")
    }

它确实通过了,但是我尝试断点并在控制台中检查值,但是没有值,为什么?请看下面的截图:

enter image description here

当我右键单击“结果”(在左窗格中)并选择“结果”输出的打印说明为-(Double) result = <variable not available>

但是即使打印功能也可以打印该值。为什么?

1 个答案:

答案 0 :(得分:0)

您的“结果”变量是一个临时的本地中间变量。

如果代码是在Release版本(而不是Debug版本)中编译的,则编译器可能已经优化了大多数中间变量,并以完全不同的顺序执行了相同的计算以获得相同的结果。因此,没有任何具有该值的变量可以在生成的运行代码中显示。

如果要查看变量值,请尝试在“构建”设置中切换为使用“调试”构建。或将所需的变量值分配给在另一个Swift文件中实例化的全局变量(Swift编译器优化这种变量的可能性很小)。