[iOS/Swift] 델리게이트(Delegate) 패턴

최정은·2023년 8월 24일
0

Swift

목록 보기
11/27
post-thumbnail

일단 delegate는 프로토콜로 구현이 되기 때문에 Protocol이 무엇인지 알아야한다!

프로토콜(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("공부중!")
    }
}

Delegate란?

사전적 의미는 보면 대리자로, 객체 지향 프로그래밍에서 하나의 객체가 모든 일을 처리하는 것이 아니라 처리 해야 할 일 중 일부를 다른 객체에 넘기는 것을 뜻한다.

Delegate Pattern 사용해보기!

TextField 추가하고 delegate를 연결한다.

self는 delegate 변수를 자신으로 설정함으로써, 자신이 위임자의 일을 대신 처리하겠다는 의미이다. 간단하게 설명하면 위임자의 delegate 변수와 자신을 연결해 주는 코드이다.

extension을 사용하여 UITextFieldDelegate 채택한 후, 아래와 같이 델리게이트 메서드를 추가하여 사용한다.

0개의 댓글