해결된 질문
작성
·
272
0
안녕하세요. 강좌 잘 보고있습니다.
-
각각 다른 파일이나 스코프에서 체이닝/구독 된 함수들의
동작 순서를 조정하거나 관리 할 수 있나요?
-
예를들어 '충돌' 판정을 하는 매니저가 있을 때,
1.플레이어 오브젝트 파일
2.몬스터 오브젝트 파일
3.무기 오브젝트 파일
에서 충돌판정 매니저를 구독후에
제각기 다양한 기능들을 += 하여 매니저에 전달 한다고 치면,
그 기능들이 동시에 수행되는것이 아니라
3 > 2 > 1 이나 2 > 3 > 1 이런식으로 순서를 조정하고 싶다고 가정할 때
-
그런것이 가능한지 여부와
불가능 하다면, 이런 케이스에는 델리게이트를 쓰면 안되는지에 대해
여쭈어 보고싶습니다.
답변 2
2
대부분 += 등록 순서되로 실행되기는 하는데,
이것이 문법적으로 꼭 보장된 것은 아닙니다.
https://stackoverflow.com/questions/54402766/delegates-invocation-order
따라서 정말 정말 순서 보장이 꼭 필요한 상황이 있다면
델레게이트 하나만으로는 안 되고 우회법을 생각하셔야 합니다.
어떤 함수에서 2 > 3 > 1을 직접 호출해주고,
그 함수를 delegate += 해서 처리한다거나,
delegate 여러개를 만들어서 리스트로 관리 한다거나,
하는 여러 방법들이 있겠습니다.
0