gpt4 book ai didi

ios - 属性和类实例swift之间的区别

转载 作者:可可西里 更新时间:2023-11-01 00:40:12 24 4
gpt4 key购买 nike

我是swift编程的新手,有一个问题如下:我有一个名为天气的类

class Weather {

}

然后我定义了两件事:

var currentWeather1 = Weather()

var currentWeather2: Weather!

它们是语法不同还是意思相同?它们实际上是用这 2 条语句在内存中创建的吗?

最佳答案

var currentWeather1 = Weather()

这声明了一个 Weather 类型的变量,并为其分配了一个新的 Weather 实例。语法 Weather()创建一个实例并运行它的初始化程序。编译器推断出 currentWeather1 的类型成为Weather .上面的语句完全等同于

var currentWeather1: Weather = Weather()

另一种说法:

var currentWeather2: Weather!

声明一个隐式可选变量。此变量是可选类型,即它的类型是 Optional<Weather> .这意味着如果您想获得值(value),就需要对其进行解包。然而,!意味着编译器将为您放入解包代码。一个普通的可选项看起来像这样:

var currentWeather3: Weather? 

但是当你需要使用它的时候,你必须解开它,例如

if let foo = currentWeather3 
{
// foo is the unwrapped weather
}
let string = currentWeather3?.description // string is an optional String
let string2 = currentWeather3!.description // string2 is a String

最后一个例子 !是强制展开。如果currentWeather3为nil,当该行执行时,程序会崩溃。 currentWeather2的声明意味着编译器会处理所有提到的 currentWeather2好像它有一个隐含的 !在它之后。

关于ios - 属性和类实例swift之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45055216/

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