gpt4 book ai didi

swift - 变量 'xxx' 从未发生突变,请考虑更改为 'let'

转载 作者:行者123 更新时间:2023-11-30 12:36:45 24 4
gpt4 key购买 nike

已更新至 xcode7-beta 我遇到了一种新的警告。这是我的代码

override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
var attributes: [UICollectionViewLayoutAttributes]? = super.layoutAttributesForElementsInRect(rect)
if let layoutInfo = self.layoutInfo {
attributes?.append(layoutInfo)
}
return attributes
}

警告消息是变量“attributes”从未发生变化,请考虑更改为“let”常量

为什么 xcode 说变量“属性”从未发生变化

问题更新

当我将代码更改为这样时,警告消失了

override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
var attributes: [UICollectionViewLayoutAttributes]? = super.layoutAttributesForElementsInRect(rect)
if let layoutInfo = self.layoutInfo {
attributes!.append(layoutInfo)
}
return attributes
}

所以强行展开可以把它拿走。但这可能不是什么好事吧?

最佳答案

他们在 WWDC 视频和发行说明中讨论了这一点。

如果您尽可能使用 let 而不是 var,那么您将获得更好的性能(更快的速度、更小的空间)。这告诉编译器这个东西是一个常量,而不是一个变量,并且这一事实允许编译器优化所有类型的东西。

但是编译器无法做到这一点,除非您确实尽可能使用let。它不会为您将 var 更改为 let

因此,在 Swift 2 中,编译器会在构建时进行更智能的分析,并在您本可以使用 let 的地方使用 var 时发出警告。最终此功能将正常工作,此时您应该听取编译器的建议!

关于swift - 变量 'xxx' 从未发生突变,请考虑更改为 'let',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759586/

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