Это Ленивая инициализация .Это часто используется, когда начальное значение является относительно дорогим для создания.Таким образом, вы создаете ценность, когда уверены, что она вам нужна.Поэтому captureSession
будет создан при первом обращении к нему, а затем сохранен в переменной captureSession
.
Синтаксис ={}()
отображает замыкание (анонимная функция), которое вызывается при обращении к вашему свойству.Этот тип возврата замыкания равен AVCaptureSession
.
Другими словами: используя lazy var a: SomeType = { ... }()
вы откладываете создание объекта a
до тех пор, пока оно вам действительно не понадобится.Когда вы обращаетесь к нему в первый раз, переменная a
получит результат закрытия.
Мне нравится объяснение, написанное здесь , Официальная документация также может быть полезным.