Debugging Xcode调试断点可以改变程序的运行方式吗?
我试图找出为什么在保存布尔属性的状态时,当我运行程序,然后停止并重新运行以模拟关闭手机时,有时它似乎无法保存 当我在每个saveState()上设置断点(保存userDefaults的方法)并运行一系列测试时,打开/关闭属性(从T切换到F),它每次都能正常工作 但是,当我关闭断点并运行完全相同的一系列事件(打开/关闭属性)时,我不会一直得到相同的结果Debugging Xcode调试断点可以改变程序的运行方式吗?,debugging,xcode8,Debugging,Xcode8,我试图找出为什么在保存布尔属性的状态时,当我运行程序,然后停止并重新运行以模拟关闭手机时,有时它似乎无法保存 当我在每个saveState()上设置断点(保存userDefaults的方法)并运行一系列测试时,打开/关闭属性(从T切换到F),它每次都能正常工作 但是,当我关闭断点并运行完全相同的一系列事件(打开/关闭属性)时,我不会一直得到相同的结果 是否有理由通过调试运行会产生与正常运行不同的结果?您发现了一个错误!时间问题?调试模式的执行速度比发行版慢。也许在调试时有足够的时间来实际保存(到
是否有理由通过调试运行会产生与正常运行不同的结果?您发现了一个错误!时间问题?调试模式的执行速度比发行版慢。也许在调试时有足够的时间来实际保存(到底层存储),而在发布时,手机在完成之前就已经关机了?嗯,我不确定。这在模拟器中也会发生——这会有区别吗?话虽如此,我不知道为什么这似乎解决了这个问题,但我将代码行从saveState和loadState函数的末尾移到了顶部(保存的第一个值),将该特定属性分配给userDefault值。我想什么有用,但我希望我知道为什么?你找到了一个!时间问题?调试模式的执行速度比发行版慢。也许在调试时有足够的时间来实际保存(到底层存储),而在发布时,手机在完成之前就已经关机了?嗯,我不确定。这在模拟器中也会发生——这会有区别吗?话虽如此,我不知道为什么这似乎解决了这个问题,但我将代码行从saveState和loadState函数的末尾移到了顶部(保存的第一个值),将该特定属性分配给userDefault值。我想什么有用,但我希望我知道为什么?