ios – 目标的View Controller变量在设置后变为nil

ios – 目标的View Controller变量在设置后变为nil,第1张

概述基本上我的代码, Swift或编译器/ Xcode本身都有问题.我有2个ViewControllers,第二个(目标)有2个UIImage变量.第一个ViewController在prepareForSegue中设置这两个图像,如下所示: if let destVC = segue.destinationViewController as? SecondViewController { d 基本上我的代码,Swift或编译器/ Xcode本身都有问题.我有2个VIEwControllers,第二个(目标)有2个UIImage变量.第一个VIEwController在prepareForSegue中设置这两个图像,如下所示:

if let destVC = segue.destinationVIEwController as? SecondVIEwController {    destVC.firstimage = firstimage    destVC.secondImage = secondImage}

每次我检查代码部分的内容时,都会设置firstimage和secondImage并且永远不会为nil(它们都是在代码的那部分之前创建的,我甚至记录检查它们并且它们永远不会是nil),但是在vIEwDIDLoad中在SecondVIEwController中,app崩溃导致firstimage被设置,但是secondImage是nil(我强行打开它).我已经尝试过多次编译 – 每次都是零并且崩溃了.之后我在segue代码中添加了print(“hello world”)行,删除了它,保存了文件,再次编译,app再也没有崩溃.

所以我的问题是 – 究竟发生了什么 – 通过代码判断,secondImage永远不应该是nil(因为secondImage永远不是nil,调试器或者断点时也不是nil),为什么destVC中的secondImage变成了零?

另外我需要提一下,我正在使用内置的Git,我不确定它是否可能以某种方式影响或破坏文件,因为我已经遇到过Xcode有时需要永远重新索引代码并且自动完成停止工作的问题20-30秒,直到它(我有一个iMac Retina与i5所以这真的不应该是一个问题).

编辑:让我添加SecondVIEwController中的代码以使事情清楚:

...class SecondVIEwController: UIVIEwController {    ...    var firstimage: UIImage?    var secondImage: UIImage?    ...    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        self.loadMainImage(self.firstimage!)        self.loadSecondaryImage(self.secondImage!) // secondImage was nil all the time here so it crashed at this point cause of force unwrap        ...    }    ...}

所以你可以看到我正确地设置了一切,并且这些方法采用了UIImage(不是可选的UIImage?)并对这些图像做了一些事情,但是secondImage总是为零.所以我的问题是 – 为什么firstimage设置正常,第二个不是?当我添加一行代码然后删除它并再次编译所有内容时,为什么它开始正常工作.

我知道我可以检查secondImage是否为nil并且我可以执行可选的展开,但这里的重点是 – 为什么它根本没有任何理由设置为nil.

解决方法 我能够通过将我的代码从vIEwDIDLoad移动到vIEwWillAppear来解决这个问题.我的类变量(在呈现视图控制器中设置)在vIEwDIDLoad中是nil但在vIEwWillAppear中实例化奇怪的是它们在vIEwDIDLoad中工作了一段时间.这似乎表明了竞争条件,但我不确定这是否有意义. 总结

以上是内存溢出为你收集整理的ios – 目标的View Controller变量在设置后变为nil全部内容,希望文章能够帮你解决ios – 目标的View Controller变量在设置后变为nil所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存