SwiftUI,可观察对象声明

时间:2020-01-26 15:27:03

标签: object observable swiftui

我正在阅读有关SwiftUI和可观察对象的教程。 在学习本教程之后,创建了一个TimerData.swift文件并创建了一个TimerData类,如下所示:

class TimerData : ObservableObject {

@Published var timeCount = 0

var timer : Timer?

在ContentView.Swift文件中,对象的声明如下:

@ObservedObject var timerData: Timerdata = TimerData()

但是为什么不这样声明呢?

@ObservedObject var timerData = TimerData()

它也可以工作。

如果有人可以澄清,我将不胜感激。

提前,非常感谢

让·弗朗索瓦(Jean-François)

1 个答案:

答案 0 :(得分:0)

即使在第二个版本中,您没有明确地说此变量的类型为TimerData,但可以推断出来。它必须是TimerData。您所做的不只是声明它,还为它分配了一个新创建的TimerData。当可以这样推断类型时,您无需显式声明它(但仍然可以像第一个版本中那样)。

现在,如果仅声明变量而不在同一行上创建变量(即删除= TimerData()),则别无选择,必须将类型明确指定为TimerData

Swift需要在编译时知道每个变量的类型(它是静态类型的)。但这并不意味着您需要显式地写出每个变量的类型,通常只是推断出来。