Протокол и источник данных (DataSource) на примере
Если мы пишем протокол, с помощь которого мы хотим получить данные (DataSource) то в функции мы всегда должны передать указатель на класс, в который мы эти данные хотим получить:
// // proSwift.ru // protocol FaceViewDataSource: class { func smilinessForFeceView(sender: FaceView) -> Double? }
Ключевое слово class говорит компилятору о том, что этот протокол могу принимать только классы. Ни структуры ни перечисления не могут принимать этот протокол. Это позволяет сделать ссылку в классе, где нам нужен источник данных (DataSource) — week свойством, чтобы не получить зацикливание ссылок на объекты.
// // proSwift.ru // weak var dataSource: FaceViewDataSource?
Это то что мы написали в коде UIView. Ниже я укажу код, который будет в контроллере.
Типичная работа контроллера интерпретировать модель в отображение.
model -> controller -> view
В контроллере мы создаем outlet на faceView и сразу после его инициализации устанавливаем свойство источника данных на контроллер, т.е. на себя, т.е. на self.
// // proSwift.ru // @IBOutlet weak var faceView: FaceView! { didSet { faceView.dataSource = self } }
Добавить комментарий