SwiftUI, декларация наблюдаемых объектов - PullRequest
1 голос
/ 26 января 2020

Я читаю учебник по 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()

Это тоже работает.

Буду признателен, если кто-нибудь сможет уточнить это.

Заранее большое спасибо много

Жан-Франсуа

1 Ответ

0 голосов
/ 26 января 2020

Даже если во второй версии вы не явно говорите, что эта переменная имеет тип TimerData, это вывод. Это должно быть TimerData. Вы делаете больше, чем просто объявляете это, вы также назначаете ему только что созданный TimerData. Когда тип может быть выведен таким образом, вам не нужно явно объявлять его (но вы все равно можете, если хотите, как в первой версии).

Теперь, если вы объявили переменную только без создания если в той же строке (ie вы удаляете = TimerData()), то у вас нет выбора, вы должны явно указать тип как TimerData.

Swift должен знать тип каждой переменной во время компиляции ( статически ). Но это не значит, что вам нужно явно записывать тип каждой переменной, часто это просто вывод.

...