게임 오브젝트 리스트가 있고 대충 채워놧음이 때Destroy() 로 게임옵젝을 삭제한뒤에그에 대한 참조(레퍼런스)를 담고있는 리스트도 null을 넣어서 해체해주는걸 꼭 하는게 맞는거임?보통 반드시 그렇게 함?
일단 나는 destroy실제 참조해제 타이밍때문에 널 명시해주긴 함. destroy해도 바로 삭제되는 게 아니라 해당 프레임 끝에서 삭제하겠다고 예약 걸어두는걸로 알고있어서
그냥 가콜에 맡겨~ - dc App
페이크 널 때문에 그러는 건 널병합 연산자 안 쓰면 상관 없고 파괴 타이밍 때문이면 캔슬 토큰으로 체크하는 게 나음
가콜에 맡겨도 되는데 난 찝찝해서 null 처리하는 편
내가 C#을 잘 알진 못하지만 여기서 언급하는 가콜이 gc를 말하는게 맞다면 gc는 아무 관련이 없는데.. 직접 제거해줘야지
MonoBehaviour의 동작이네 유니티 C#은 특이하구나. MonoBehaviour를 상속하고 있는 참조는 자동으로 null로 여겨지게 만들어줌. 표준 C#객체는 직접 제거해야하고. 항상 상속하는게 좋겠네
https://jacx.net/2015/11/20/dont-use-equals-null-on-unity-objects.html
이중으로 포인팅하는 구조로 구현되었을거여서 null로 만들어주는게 성능상 이점을 줄 수도 있음. 다만 그런 미세한 최적화는 처음부터 하지 말고 완성된 후에 비교해보고 고려하셈
컴파일 타임 다형성이어서 == null 처리가 기괴해진다는건 독특하네
실제로 rider나 resharper는 저렇게 널 처리 해버리면 성능 많이쓴다고 빨간줄침
반드시 넣어라... 꼭 넣어라 별 거 아닌 것 같지만 그걸로 한번 고통 받아본 뒤로는 이가 갈린다 파괴 이후에는 널! 파괴 이후에는 널!!