작성
·
246
0
Awake에서 리스너를 등록할 경우, 오브젝트가 한 번도 활성화 되지 않았다고 가정할 때 OnDestroy 함수가 호출되지 않아 나중에 오류가 날 수 있을 것 같은데요.
(물론 Start에서 등록을 하면 아무런 문제가 없겠지만요.)
Awake에서 리스너를 등록하는 경우는 아예 없나요?
제 짧은 식견으로는 버그의 가능성만 보이고 실제 있을 법한 사례인지는 판단이 어려워 여쭤봅니다..
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
gya9877님, Unity에서 Awake 함수는 오브젝트가 생성될 때 단 한번 호출되며, OnDestroy 함수는 오브젝트가 제거될 때 호출됩니다. 말씀하신 문제는 실제로 발생할 수 있습니다.
Awake에서 리스너를 등록하는 경우는 분명 있습니다. 주로 오브젝트가 활성화 되기 전 필요한 초기 설정을 수행할 때 사용하죠. 하지만 Awake에서 이벤트 리스너를 등록할 경우, 해당 오브젝트가 비활성화 상태에서 파괴된다면 OnDestroy가 호출되지 않고, 리스너가 제거되지 않아 메모리 누수가 발생할 수 있습니다.
이 문제를 방지하기 위해선 다음과 같은 점을 고려할 수 있습니다:
제안해 드린 방법을 참고하여 안정적인 코드를 작성해 보시길 바랍니다.