我正在阅读有关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)
答案 0 :(得分:0)
即使在第二个版本中,您没有明确地说此变量的类型为TimerData
,但可以推断出来。它必须是TimerData
。您所做的不只是声明它,还为它分配了一个新创建的TimerData
。当可以这样推断类型时,您无需显式声明它(但仍然可以像第一个版本中那样)。
现在,如果仅声明变量而不在同一行上创建变量(即删除= TimerData()
),则别无选择,必须将类型明确指定为TimerData
。
Swift需要在编译时知道每个变量的类型(它是静态类型的)。但这并不意味着您需要显式地写出每个变量的类型,通常只是推断出来。