KATUBLO
2019年06月03日

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

こんにちは。KATUOです。今回はswiftdelegateについて解説していきたいと思います。

 

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クラスに記述し、それをカスタマイズして実装するのが処理を任されたクラス。というような関係を持ちます。

 

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

https://pg-happy.jp/swift-delegate-protocol-rikai.html

 

参考にしている参考書

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習をスタート。この時期からプログラミングにどハマりし、現在までに「AIスタートアップ」「Webマーケティング会社」でエンジニアとしての業務に没頭してきた。

スポンサードリンク

大学生必見就活イベント