2024.10.17(목)
delegate ('위임하다', '대리자' 라는 뜻을 가지고 있다)
등등에 사용된다.
delegate는 함수에 대한 참조들을 가지고 있는 타입이다.
delegate를 변수처럼 사용할 수 있다.
delegate를 매개변수로 전달 가능하다.
=> 함수를 변수처럼 저장하거나, 매개변수로 전달 가능하다.
다음과 같이 delegate 변수를 만들고 함수를 저장할 수 있다.
delegate 반환형 델리게이트이름(매개변수);
델리게이트이름 변수이름;
변수이름 = 함수이름1;
변수이름 += 함수이름2;
delegate는 외부에서 실행가능하다.
event
기본적으로는 델리게이트의 한 종류이다.
특정 이벤트가 발생하면 연결된 함수들을 호출하는 구조이다.
옵저버 패턴과 유사하게 활용할 수 있게 도와준다.
옵저버 패턴?
객체를 관찰하는 옵저버들이 객체의 변화를 감지하여 옵저버를 보낸 객체에게 알림을 보내는 패턴.
다음과 같이 event 변수를 만들고 함수를 저장할 수 있다.
event 델리게이트이름 변수이름;
변수이름 += 함수이름;
event는 구독기반 로직이며 외부에서 실행불가하다.
delegate는 외부에서 직접 호출이 가능하다.
event는 외부에서 구독에 대한 작업만 가능하고, 외부에서 직접 호출이 불가능하다.