[메모리 구조]
- stack : compilor
- heap : programable
- data : 전역, 정적 변수 저장 (특징 - 초기화 필요 : 관리가 더 잘 되고 있는 편)
- code : 델리게이트와 연관 (함수를 만들었을 때 함수 주소 테이블은 코드 메모리에서 저장)
(함수 명 = 함수 주소)
델리게이트란?
델리게이트는 메서드에 대한 참조를 나타내는 형식이다.
델리게이트 선언 단계에서 메서드의 시그니쳐를 지정하고, 이 시그니처와 일치하는 메서드들을 해당 델리게이트의 객체에 할당해서 사용할 수 있다.
이렇게 사용하면 메서드를 변수처럼 활용할 수 있게 되어 메서드를 매개 변수로 전달할 수도 있고, 하나의 델리게이트 객체에 여러 메서드를 연결함으로써 콜백을 만들 수 있다.
delegate / event
delegate 키워드는 사용자 지정 델리게이트를 정의하는 데 사용된다. 사용자 정의 자료형명을 가지고, 사용자가 원하는 메서드 시그니쳐로 정의된다.
event는 특별한 종류의 델리게이트 객체라 할 수 있는데, 델리게이트는 메서드를 변수처럼 저장하고 전달할 수 있는 기능을 위주로 쓰이고 객체화해서 사용하는 반면, 이벤트는 그 자체로 객체이며 특정 상황이 발생했을 때 외부에 알림을 보내는 데 사용된다.
이벤트는 클래스 내부에서만 발생시킬 수 있으며, 외부에서는 이벤트에 대한 등록 및 해제만 수행할 수 있다. 이벤트는 이벤트 핸들러(대리자)의 목록을 관리하고, 이벤트가 발생할 때 등록된 핸들러들을 순차적으로 호출하여 작업을 수행한다. 이로써 클래스의 내부 상태나 동작을 안전하게 캡슐화할 수 있으며, 외부로 "알림"을 보내는 역할을 한다.
Action / Func
Action와 Func는 델리게이트의 한 종류인데, 미리 정의된 형식을 가지고 있어 사용자가 직접 델리게이트를 선언할 필요 없이 메서드 매개 변수나 반환 타입만 정해서 바로 객체로 쓸 수 있게 해주는 키워드이다.
action은 반환값 없는 메서드를 대상으로 매개변수의 타입만 정의해서 사용하는 키워드이고, func는 매개변수와 반환 타입을 모두 설정해서 사용하는 키워드이다.
✨ 프로젝트에 적용해 본 경험 ✨
이벤트의 경우에는 객체들 간의 의존성을 낮추면서 원하는 시점에 동작을 하도록 하기 위해 사용했고, 주로 어떤 로직에 의해 UI요소가 영향을 받을 때 해당 변경 사항을 알리도록 하기 위해 사용했다.
Action은 지금 프로젝트에서도 활용하고 있는데, 플레이어가 외부 환경으로부터 메서드를 받아와서 저장을 하고, input이 들어올 때에 해당 메서드의 기능을 실행할 수 있도록 하는 데 사용하고 있다.
람다식(Lambda Expression)
이름이 없는 메서드로, 필요한 기능을 간단하게 정의하고 활용할 수 있다.
또한 객체처럼 활용 가능하기 때문에 다른 함수의 인자로 전달하거나 이벤트에 연결하는 것이 가능하다.
콜백
함수나 람다식 등을 다른 함수의 인수로 전달하고, 나중에 호출되어서 특정 작업을 수행하는 방식입니다.
'👾 내일배움캠프 > 🎮 TIL & WIL' 카테고리의 다른 글
내일배움캠프 71일차 TIL - IEnumerable & IEnumerator (코루틴) (1) | 2023.11.24 |
---|---|
내일배움캠프 65일차 TIL - 씬 전환 (1) | 2023.11.15 |
내일배움캠프 60일차 TIL - 플레이어와 주방기구 상호작용 (1) | 2023.11.08 |
내일배움캠프 55일차 TIL - InputSystem과 가상 조이스틱 (On-Screen Button / On-Screen Stick) (0) | 2023.10.31 |
내일배움캠프 54일차 TIL - struct와 class (0) | 2023.10.29 |