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