SwiftのDelegateの基本の基
非エンジニアで最近Swiftを勉強している友人に「Delegateって何??」と質問された際を想定し、Delegateの基本についてまとめます。
※主に自身の毎日の復習・学習の機会創出、アウトプットによる知識の定着を目的としております。暖かい目で読んで頂けますと幸いです。
デリゲート(Delegate)
デリゲートは日本語訳は「委譲」です。
委譲は意味としては渡すや任せるです。
swiftでのDelegateも委譲する機能になります!
一言で言うと「あるクラスが、他のクラスのインスタンスに、処理を任せることができる。」と言う説明を多くみます。
※(特定のインスタンスから別のインスタンスへ)
では、具体的に何が何に何を委譲するのか、具体例をみながら確認していきましょう!
1.デリゲートは誰が任せるのか
誰が = 「クラスAが」
になります。
つまり、あるクラスが自身の処理を任せます。
tableviewであれば「UITableViewクラス」が自身の処理を他人に任せます。
2.デリゲートは何に任せるのか
何に = 「クラスBに」
になります。
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}
swiftでtableViewを作成するときはこのような表記をすることがよくあるかと思います。
この例では「delegate」を「self」に任せています!
そして、ここでのselfはこのコードを記載している「ViewController」を意味します。
つまり、このコードを記載している「ViewController」に任せることになります!
3.デリゲートは何を任せるのか
何を = 「自身(クラスA)の処理を」
になります。
そして、この処理のことを具体的に「デリゲートメソッド」と言います。
ですので、正式には「自身のデリゲートメソッド内の処理」を他のクラス・インスタンスに任せる(委譲する)ことになります。
tableviewであれば
swift
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}
などがデリゲートメソッドに当たります。
※tableviewのデリゲートメソッドは他にもありますが、ここでは割愛
まとめ
・Delegateは「あるクラスAが、クラスBのインスタンスに、処理(クラスAのデリゲートメソッド)を任せることができる。」機能