gpt4 book ai didi

Swift 惰性变量和 didReceiveMemoryWarning

转载 作者:搜寻专家 更新时间:2023-10-31 08:34:26 25 4
gpt4 key购买 nike

我想在 Swift 中延迟加载一个 nib 文件,所以我这样做了

lazy var MyNib: UINib?  = {
let uiNib:UINib = MyClass.nib();
return uiNib;
}()

我知道这只会被调用一次。

所以,如果我得到一个 didReceiveMemoryWarning,测试似乎表明将它设置为 nil 没有任何效果,因为它不会在以后访问时重新初始化,这可以通过 Objective C 属性完成。

更多的问题是 NSFetchedResultControllers,因为我可能真的希望卸载数据负载,然后在以后重新加载。

这在 Swift 中如何实现?

谢谢

最佳答案

作为解决方法,您可以使用初始为 nil 的支持私有(private)属性,并围绕它实现计算属性。计算属性同时实现了 getter 和 setter,getter 检查 baking 属性是否为 nil,如果需要则初始化它。

private var _nib: UINib?

var uiNib: UINib {
get {
if _nib == nil {
_nib = MyTestClass.nib();
}
return _nib!
}
set { _nib = nil }
}

通过这种方式,您可以根据需要多次将该属性设置为 nil,确保下次以读取模式访问它时,它会再次重新初始化。

请注意,此实现不是线程安全的 - 但它很可能仅在主线程中使用。

关于Swift 惰性变量和 didReceiveMemoryWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159625/

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