よくわからないSwift! 〜Delegate〜

ただいま晴れです
1週間天気予報がオレンジで埋まっています。
…こわい笑
恐るべし関東笑笑
ちなみに地元は1週間全部雪でしたね!そりゃもう寒波ですから!
帰ったらまず雪かきしなきゃとか、知りませんから!

 

今回は新コーナー?企画?ということで

よくわからないSwift!

お送りしました
少しでも壁にヒビが入って割りやすくなればいいなぁと
(登らずに割っていくスタイル)

動画で使用したスライドで説明していこうと思います。
Appleが出しているDelegateの説明はこちらです。

Delegation
Using Delegates to Customize Object Behavior
参考までにこちらも
Delegation in Swift

 

Delegateを簡単に説明すると

Delegateを使うことによって、自分以外のObjectを実行したりお手伝いしたりできますよ!


逆視点で言えば

 

Delegateによって他のオブジェクトに自分の代わりに処理を実行してくれるよう頼めますよ
ということになります。
これだけだと怒られちゃいますので
図で説明したいと思います。

ObjectAとObjectBがあって
ObjectAはObjectBに紐づいています。

そのためObjectBからObjectAへのアクセスは可能ですが
その逆は不可能です。

 

①それでObjectBに連絡したいと思ったObjectAはdelegateを使うことにします。

②delegateに情報を伝えると、ObjectBに連絡してくれました

③delegateによってObjectAからの連絡を受け取ったObjectBは

連絡内容にある処理を行います。

 

これでコミュニケーションが取れました
めでたしめでたし。

 

これをAをUITableViewBをUIViewControllerとして考えてみます


ViewControllerにTableViewは紐付いています


ViewControllerからTableViewへのアクセスが可能、というのは
セルの数やラベルに表示する値を設定できるということです。
逆に、セルをタップした際どのセルがタップされたのかを知ることはできません。

そのような情報はTableViewが知っています。
しかし、TableViewはViewControllerに連絡ができません。


そこでDelegateです。


セルがタップされたからこのメソッドを実行してねというTableViewからの伝言を伝えるわけです
そして、連絡が来たことによってメソッドを実行可能になったViewControllerはメソッドを実行します。

このようにObjectA,Bをそれぞれ置き換えるとわかりやすいと思います。
あくまで
なんとなく分かった
の域ですので、興味を持った方はさらに調べてみてください!

 

参考にしたサイト

【swift】イラストで分かる!具体的なDelegateの使い方。
プロトコルとデリゲートのとても簡単なサンプルについて
猿がもがきまくって理解したSwiftのデリゲート(Delegate)という仕組み
【Swift】hogehoge.delegate = self は何をしているのか。

 

あとがき

Delegate厄介ですね
調べてる最中、理解したと思えば一気にわからなくなったりして消化するのに時間がかかりました。
委任、というのはなんとなく分かってたつもりなんですが
誰が誰に頼んでいるのかとか、処理を実行するのはどっちかとか
情報が増えれば増えるほど困惑しました笑
最後の方なんて
もう、委任って分かってればいいんじゃない?!
ってなってました。
そして録画中に声カッスカスになって大変でした笑
飲み物飲んでも乾くし、もはやお手上げ笑
(録画最初の方でコップの水消えました。)
かすかすをごまかすためだけにテンポ高めのBGMを選曲、
音量をいつもよりあげたのはここだけの話です。
ちなみに途中に入っている咳は先に寝てた一番下の妹です。
ぐっすり寝てるよ羨ましい。。。
以上現場からでした。






コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です