Протокол и источник данных (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
        }
    }

Добавить комментарий

Ваш адрес email не будет опубликован.

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.