gpt4 book ai didi

在调用初始化之前加载到内存中的 Swift 属性

转载 作者:行者123 更新时间:2023-11-28 09:55:44 24 4
gpt4 key购买 nike

在我的应用程序中,属性似乎在被调用之前就已加载到内存中。要么我的理解有问题,要么我忽略了什么。为了说明我在点击登录后不久就设置了一个断点,正如您在图像中看到的那样(第 226 行):

enter image description here

我希望在第 230 行初始化属性 let user = User()。所以我不知道 user 怎么可能已经加载到内存中,如左下角所示附上图片。

为什么会这样?
这是幕后发生的某种代码优化吗?

我可以确认 user 在此之前没有被加载/初始化(它不是类属性)。此外,我可以确认注释掉第 230 行及以下会导致用户未被加载,因此看起来第 230 行是导致用户被加载的原因。但奇怪的是,这发生在它被调用之前,因为我在第 226 行用断点暂停了执行。

最佳答案

能够阅读变量列表很重要。 始终显示所有局部变量,即使它们尚未初始化,因为已经为它们预留了存储。因此,在初始化之前,显示了变量,但它的 可能是伪造的。我的猜测是该值 伪造的。它它是一个用户,因为这是它的类型,但在您查看时,它指向垃圾,您应该忽略它。执行路径经过初始化后,该值会发生变化,成为真正的值。

(但是,如果这是一个发布版本,那么可能确实有某种优化,因为这是一个常量,其值不依赖于前面的代码,所以它可以分配在任何时候。但你不应该调试发布版本。)

关于在调用初始化之前加载到内存中的 Swift 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com