"まだ"の力 [Swift]基礎辞書

学んだことを書いていきます。質問やエラーなどございましたらお気軽にコメントお願いします。

「プロトコル」と「デリゲート」

デリゲートってなんだろ?

「あるクラスは、他のクラスのインスタンスに、処理を任せることができる。」というようなこと。

参考サイト:プロトコルとデリゲートのとても簡単なサンプルについて - Qiita

ほうほう。
ん?




プロトコルってなんだろ。名前は聞いたことあるけどよく知らない。


プロトコル

参考サイト:Protocol - Swiftサラリーマン

なるほど。要するに、欲しいものリストだな!optionalてのがついてるとオプショナル値(?:はてな)同様実装してもしなくてもいいのか。




さて、デリゲートに戻って、上記のサイトのサンプルコードを自分なりに変えて書いてみました。

protocol 欲しいものリスト {
    func sayHello() -> String
}

// 依頼人クラス
class 力を借りる {
    
    // ここで、プロトコルに従うクラスのインスタンスを用意する。
    var delegate: 欲しいものリスト!//欲しいものリストのカタログのような感覚

    func say() -> String {
        //デリゲートのsayHello関数を使うことを書く
        return delegate.sayHello()
    }
}

// 力を貸すクラス。クラスの後ろにプロトコルを書く
class 力を貸す: 欲しいものリスト {
    //力を貸すクラスでできることがsayHello()
    func sayHello() -> String {
        return "受託しました。"
    }
}

let borrow = 力を借りる()
let rent = 力を貸す()
borrow.delegate = rent    // 依頼するクラスを指定
borrow.say()    // "受託しました"と出力

プロトコルは個人開発の場合あまり作成しないみたいですが、UIViewControllerやUIPickerViewなど使用する場合には必ず出てくるので身につけておきたいですね。