1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Delegateについて

Posted at

#・Delegateとは?
Swiftにおけるイベント通知パターンの一つである。あるオブジェクトの処理を別のオブジェクトに代替させる。

##・Delegateのイベント通知から処理の流れは大まかに、以下のようになっている

####①イベントの発生を検知
処理を任せる側がユーザーからの画面のタッチなどのイベントを検知し、処理を任せられる側(委譲先)に通知する。

####②イベント発生後にしたい処理
処理を任せる側(委譲元)から送られてきた通知から、処理を任せられる側(委譲先)が具体的な処理を行う。

#・処理を任せる側(委譲元)で行うこと
処理を任せる相手を保持するプロパティを持つ

#・処理を任せられる側(委譲先)で行うこと
①委譲先においてprotocolを準拠
②委譲先の指定
③必須の関数(デリゲートメソッド)の記述

#・具体例

・プロトコルの実装

protocol SomeDelegate : class {
    func sayHello()
}

・処理を任せる側の実装

final class Person {

    // 委譲先を保持するプロパティ
    weak var delegate : SomeDelegate?
    
    func say() {
        delegate?.sayHello()
    }   
}

・処理を任せられる側の実装

final class Okadai {
    
}

//extensionでデリゲートメソッドを記述
extension Okadai : SomeDelegate {
    
    func sayHello() {
        print("Hello, I'm Okadai")
    }

}

・デリゲートをセットして、実行する

import UIKit

final class InitialViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let person = Person()
        let okadai = Okadai()
        

        // 処理を任せる相手(委譲先)をokadaiに指定する
        person.delegate = okadai
        
        person.say() // "Hello, I'm Okadai"
        
        
    }
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?