なえT備忘録

何の参考にもならないかもしれませんが、いつかは参考になるようにします

世界一わかりやすくて終わってるDelegateの覚え方

まともにアプリつーかUIKitの勉強を始めて1週間か2週間か経ち、ようやくDelegateを理解したので解説

 

肝となるのは、

プロトコルで定義された何らかのイベントが実施されれば、それをトリガーとして実行するメソッドを設置でき、戻り値をプロトコルと同じクラス(厳密には

インスタンス生成されたもの)に格納できる

②実行されるメソッドは、プロトコルと同じクラス内でも、違うクラスにあってもいい。なので、ボタンが押されたりエンターが入力された、といった操作がされたクラス(ViewController等)と同一である必要はなく、ほかのクラス(例えば別の.swiftファイルだったり)にあるメソッドに処理を依頼して、戻り値を入手することもできる。

 

例えば、検索バーにキーワードを入れ、検索ボタンを押すと、親クラスにUISearchBarDelegateプロトコルが定義されていれば、その動作が通知となりsearchBarSearchButtonClickedメソッドが実行される。通知先をselfとし、このメソッドで検索バーに入ったキーワードをDB、APIへ送信する処理を入れておけば、同一クラス内の一連の動作とできる。

逆に、キーワードをDB,APIへ送信するメソッドを別のクラスに保管しておいても、viesDidLoad()などで通知先を別クラスに指定しておけば、そっちで処理した上でイベントがあったクラスに返してくれる。機能毎にクラスを分けておいた方が、再利用しやすいメリットもある。これが設計思想ってやつか

 

要は、所定のプロトコルに絡んだイベント(ボタン押すとか)が対象クラス内で発生した際、そのタイミングで別のクラスに既定のメソッド処理を依頼でき、その返り値を依頼元クラスに返すことができる ちなみに依頼せず自力で処理することもできる

 

分かりやすく言うと、  ニコニコスポーツバーでは、代表戦で日本が勝った瞬間、客Aが客Bにテキーラを飲ませて、吐いたゲロを渡すルールがある ちなみに自分で飲んでゲロを吐くこともできる(客Aはスポーツバーに日本が勝ったらテキーラを飲む、という決め事を押し付けた犯人で、しかもゲロをほしがる異常者である)

ニコニコスポーツバー 親クラス

日本が勝ったらテキーラを飲ませるルール Delegateプロトコル

客A 依頼元クラス(プロトコルに対応)

客B 依頼先クラス

テキーラ Delegateメソッド

ゲロ 戻り値

 

 

ゲロにまみれろよ