【swift】delegateとは?初心者が解説してみました

プログラミング

delegateとは

あるクラスだけでは処理を行うことができない命令を、そのクラスの代わりに行ってくれるクラスのことを言います。

 

 

delegateの周辺知識

プロトコル

処理を任せたいメソッドを定義します。ここで定義されたメソッドはデリゲートメソッドと呼ばれます。

 

 

みたいな感じで書けます。またProtocolはobjective-cで書かれていた@interfaceの拡張したものと考えてよいです。protocolにはオーバーライドをすることができないなどの特徴があります。

 

デリゲートメソッド

デリゲートメソッドにおいて、@requireと@optionalという修飾子があります。@requireで定義されたデリゲートメソッドは指定したクラス内に書かないとエラーとなります。この修飾子を定義しなかった場合、ディフォルトでは@optionalになります。

 

 

delegateを実装してみるよ

protcolとデリゲートメソッドを定義する

Notifyというクラスを作って、このnotifyクラス内でイベントが発生した際に、viewControllerで何かイベントを発火する実装をしていきたいと思います。

 

 

まず、protocolを宣言して、この中にNotifyinformというデリゲートメソッドを定義しました。

 

NotifyDelegate?というのはオプショナル型で定義していますね。オプショナル型で定義するということはnilが入るかもしれないという意味です。Optional<NotifyDelegate>と同義らしいです。

 

今回のコードではこのクラス内でイベントが発生した時に、デリゲートメソッド Notifyinformを起動するようにしている。

 

ViewControllerに処理を任せる

 

notify.delegate = self ですが、selfはViewControllerクラス自身を指します。この記述によってViewControllerにNotifyDelegateの処理をまかせることができます。この際の両者の関係として、ある種決まり切った処理(通知をする)などはDelegateクラスに記述し、それをカスタマイズして実装するのが処理を任されたクラス。というような関係を持ちます。

 

参考にさせていただいたサイト

【Swift】delegateとprotocolを理解!実装と書き方を解説 | おすすめのプログラミングスクール比較!最短で上達するなら?
Swiftのデリゲートとプロトコルを自分で実装することについて理解したのでその書き方や仕組みをイラストで説明していく。 delegateとprotocolの理解と書き方 Abcとい...

 

参考にしている参考書

タイトルとURLをコピーしました