Swift

[Swift] Protocol 과 Delegate

insub4067 2022. 6. 14. 09:53

1. Protocol 내부에 작성된 함수는 실문행을 작성할수 없다.

2. Protocol 은 base class 보다 더 Abstract한 개념이다.

3. Delegate는 호출자와 실행자가 있는데 (내가 붙인 개념임) 둘 사이를 연결하는 일종의 Trigger 역할을 한다

4. Caller는 delegate을 선언하고 접근해서 호출한다

5. Acter는 delegate를 상속한다. 그리고 init을 통해 caller의 delegate는 self임을 할당해준다

// Protocol
protocol someDelegate {
    func trigger()
    // 실행문이 없다
}

// Caller
class Caller {
	// delegate 선언
    var delegate: someDelegate?
    
    // delegate을 통해 함수를 실행한다
    func activateTrigger() {
        delegate?.trigger()
    }
}

// Actor
class Actor: someDelegate {
    
    // Caller와 delegate을 통해 통신할수 있도록 할당해준다
    init(handler: Caller) {
        handler.delegate = self
    }
    
    // delegate을 통해 Caller에서 호출시 실행될 함수
    func trigger(){
        print("trigger has been activated")
    }
}

let caller = Caller()
let actor = Actor(handler: caller)

// caller가 호출하면 actor의 trigger가 실행된다
caller.activateTrigger()


// console
// -> trigger has been activated