[UE5] 로우포인터대신 TObjectPtr을 써야하는 이유?
뭐랄까 확실하다기보다는 아직까지는 좀 더 추상적이긴 한데..
언리얼 문서에서는 TObjectPtr을 써야하는 이유로 동적해상도와 액세스 추적을 추가한다! 라고 되어있다.
사실 이부분은 언젠가 실제로 겪었을 때 이 글을 업데이트해야겠다고 생각한다.. 지금은 잘 모르겠다.
이것보다 좀 더 와닿는것은, 언리얼엔진만든 에픽사가 앞으로 '표준'으로써 로우포인터대신 TObjectPtr을 채택했다는 사실 자체이다.
즉, 버전이업데이트될때마다 그들이 만드는 코드들은 개발자가 TObjectPtr을 사용한다는 '가정'하에 디자인할 것이라는 것.
이 문구를 보니까 뭔가 로우포인터쓸지 TObjectPtr 쓰지 살짝 고민했던것이 사라졌다.
정리하자면 헤더에서 변수선언할때는 로우포인터대신 TObjectPtr을 쓰고, 함수내의 로컬변수같은것에서만 로우포인터를 사용하는쪽으로 점점 바꿔보자.
내가 참고한 글은 이 글이다.
https://forums.unrealengine.com/t/why-should-i-replace-raw-pointers-with-tobjectptr/232781
Why should I replace raw pointers with TObjectPtr?
I am reading the UE5 migration guide (Unreal Engine 5 Migration Guide | Unreal Engine 5.0 Documentation), and I see that TObjectPtr is now recommended over raw pointers. But the only thing the guide says about what this new type does is this: This system a
forums.unrealengine.com
다만, TMap같은 컨테이너에서 TObjectPtr을 사용했을 때 생기는 이슈들이 좀 있는 것 같다.
이부분은 확실하게 인지하는것이 좋다.