-TArray
Reset() : 배열의 모든 요소를 제거, 할당된 메모리는 유지, 즉 배열을 다시 채울 계획이 있어서 메모리가 재할당을 피하고 싶을때 사용
Empty() : 배열의 모든 요소를 제거, 할당된 메모리 까지 해제, 즉 배열을 더이상 사용하지 않아서 메모리 사용을 줄이고 싶을때 사용
-Delegate
UFUCTION() 매크로 : 델리게이트에 등록하여 사용할 함수는 UFUNCTION 매크로를 선언해주어야 한다. 이유는 언리얼에서 이 매크로를 통해 리플렉션 시스템이 해당 함수를 인식하고 등록하여 사용될수 있도록 작동하기 때문
IsBound() or IsAlreadyBound() : 언리얼에서는 델리게이트에 함수를 등록하려할때 이미 해당함수가 등록되어 있으면 에러를 발생시킨다.
언리얼에서는 기본적으로 중복 등록을 허용하지 않으며, 중복 등록으로 인한 의도하지 않은 동작, 메모리 누수와 같은 성능문제, 기타 예상치 못하는 예외 발생등을 고려하여 허용하지 않는다.
그래서 함수를 등록전에 이 함수들을 사용하여 이미 등록되어있는지 체크를 하여 등록 해줄수 있다.
RemoveAll(const void* InUserObject) or Clear() : 위 함수 델리게이트 등록전 등록 여부를 체크하는것이 아닌, 이 함수들을 사용하면 현재 델리게이트에 등록되어있는 함수들을 제거해준다.
차이점은 RemoveAll은 해당하는 객체에 등록된 모든 함수를 제거 해주는것으로 보통은 this인자로 해당 객체를 넘겨준다, Clear는 델리게이트에 등록된 모든 함수를 그냥 제거해 주는것이다.
그래서 델리게이트에 중복 등록 여부 체크를 하고 싶지 않다 하면 종료시점에 델리게이트에 등록된 함수를 제거해주는것도 하나의 방법이다.
'Unreal' 카테고리의 다른 글
(브러시 모드) 펜툴을 이용한 지오메트리 생성시 충돌 주의점 (0) | 2024.12.10 |
---|---|
언리얼 리플렉션 TFieldIterator (0) | 2024.06.22 |
언리얼 엔진에서 제공하는 싱글톤 클래스 종류 (0) | 2024.02.13 |
언리얼 CDO (Class Default Object) (0) | 2023.12.13 |
언리얼로 게임 개발 공부를 해보다.. (0) | 2021.07.23 |