일단 delegate는 프로토콜로 구현이 되기 때문에 Protocol이 무엇인지 알아야한다!
프로토콜은 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현을 해야한다. 즉, 프로토콜은 정의를 하고 제시를 할 뿐이지 스스로 기능을 구현하지는 않는다.
쉽게 말하면 반드시 지켜야 하는 약속이라고 생각하면 된다!
protocol 프로토콜 이름 {
프로토콜 정의
}
class SomeClass: AProtocol {
// 클래스 정의
}
protocol Student {
var height: Double { get set }
var name: String { get }
func Study()
}
class Jeny: Student {
var height: Double = 180
var name: String = "Jeny"
func Study(){
print("공부중!")
}
}
사전적 의미는 보면 대리자로, 객체 지향 프로그래밍에서 하나의 객체가 모든 일을 처리하는 것이 아니라 처리 해야 할 일 중 일부를 다른 객체에 넘기는 것을 뜻한다.
TextField 추가하고 delegate를 연결한다.
self는 delegate 변수를 자신으로 설정함으로써, 자신이 위임자의 일을 대신 처리하겠다는 의미이다. 간단하게 설명하면 위임자의 delegate 변수와 자신을 연결해 주는 코드이다.
extension을 사용하여 UITextFieldDelegate 채택한 후, 아래와 같이 델리게이트 메서드를 추가하여 사용한다.