ios - 在 Xcode 中调试时如何更改 let 值?
问题描述
我正在尝试在 Xcode(Xcode 12)上进行中期调试时更改 let 值。但是,当我尝试这个调试器命令时
expression isLongBoxRide = true
我在 Xcode 调试器终端中收到此错误。“错误:无法分配给值:'isLongBoxRide' 是不可变的 isLongBoxRide = true”它不会让我在调试时更改 let 值。当我尝试更改 var 时它会起作用。我只是好奇是否可以在 Xcode 上调试时更改 let 值。如果可以的话,那就太好了。
解决方案
问题是编译器可能会在编译时分析 let 常量,然后优化您的代码。例如,想想这样的事情:
func x() -> String {
let doit = false
if (doit) {
return "Yes"
} else {
return "No"
}
}
// ...
let result = x()
聪明的编译器会将其更改为
func x() -> String {
return "Yes"
}
// ...
let result = x()
甚至x()
完全放弃:
let result = "Yes"
因此,根本没有doit
常数,特别是return "No"
您的程序中不再有分支。这是一个极端的例子,编译器通常只会在发布模式下这样做,但是您可以看到在调试期间允许更改常量并不容易,因为编译器可能必须恢复一些优化。
推荐阅读
- translate - 我如何翻译 ADS-B?
- excel - Excel - 如何选择占数据 60% 的最大值
- apache - 如何为 Qlik 反向 apache 代理?
- electron - 来自 Ubuntu 的 Electron 应用程序 Windows 安装程序 (.exe)
- elasticsearch - Logstash :sql_last_value 显示错误的垃圾日期(显示 6 个月的旧日期作为上次运行时间)
- eclipse - eclipse maven构建java.lang.ExceptionInInitializerError
- python - 无法使用 bs4、python、selenium 抓取细节
- javascript - 使用 Javascript 进行分阶段表单验证
- vue.js - Vue.js点击组件多次触发
- python - 在 tkinter python 中的 OptionMenu 内定位文本