gpt4 book ai didi

ios - 当我试图快速访问它时,弱属性给了我零

转载 作者:行者123 更新时间:2023-11-28 10:20:37 27 4
gpt4 key购买 nike

我有这些类(class):

class Song {
var title : String = ""
weak var album : Album?

init() {
self.album = Album()
}

}

class Album {
var title : String = ""
var Songs : Array < Song > = []
deinit {
print(self , self.title)
}
}

这应该可以正常工作,但每当我尝试从歌曲实例设置专辑标题时,我都会收到专辑的零错误例如,如果执行下面的代码:

let s = Song()
s.title = "some title for song"
s.album!.title = "some title for album"

当尝试 s.album!.title = ""我得到:

unexpectedly found nil while unwrapping an Optional value

在 Song 类中的 init 上调用一次 deinit 函数

我在这里做错了什么?我该如何解决这个问题?

最佳答案

只要没有其他 strong 引用它所持有的值,Weak 属性就会变为 nil。在您的代码中,您将新创建的 Album 值分配给它并且不将其存储在其他任何地方。

所以你的 weak 属性持有对专辑实例的唯一引用,并且在分配后它将立即变为 nil。

修复将取决于您使用/构建数据的方式。如果 Album 存储对其歌曲的引用,那么您应该首先在某处创建和存储专辑对象,然后使用它来初始化其歌曲。如果 Album 没有对其歌曲的引用(这可能很奇怪),那么您可以将 album 变量设置为 strong。

关于ios - 当我试图快速访问它时,弱属性给了我零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35641315/

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