인프런 커뮤니티 질문&답변

themoon007님의 프로필 이미지
themoon007

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

9강 무한맵의 제작

FSoftObjectPtr 함수 질문

해결된 질문

작성

·

398

0

IsPending()은 객체정보는 있지만 로딩되지 않았을 때 True.

IsValid()는 객체정보있고 로딩도 되있을 때 True 인가요??

 

그렇다면,

IsPending()은 nullptr 일 때 false.

IsValid()는 객체정보는 있고 로딩 전 일때 false 인가요??

답변 1

1

이득우님의 프로필 이미지
이득우
지식공유자

소프트레퍼런스란 내용물은 주소에 해당하는 문자열인데, 내부적으로는 실제하는 어떤 오브젝트를 가리킵니다.
IsPending은 소프트레퍼런스 내부에서 가리키는 오브젝트가 존재하고, 유효하면 true가 반환됩니다.

IsValid는 대상 언리얼 오브젝트가 유효하면 ( 가비지컬렉터에 의해서 관리되면 ) true가 반환됩니다.

themoon007님의 프로필 이미지
themoon007
질문자

아,, 제가 SoftObjectPtr이랑 WeakObjectPtr이랑 같은 건줄 알고 혼동했네요....

 

SoftObjectPtr은 가지고있는 오브젝트를 나중에 로딩하려는 목적이고

WeakObjectPtr은 먼저 destroy되는 오브젝트를 메모리 해제시키려는 목적인 것이지요?

이득우님의 프로필 이미지
이득우
지식공유자

사실 거의 비슷한 개념입니다.
다만 WeakPointer(약포인터)는 상호참조 문제를 피하기 위해 레퍼런스를 약하게 걸어둔 ( 한단계 쿠션을 더 쳐둔 ) 포인터로 사용됩니다.

themoon007님의 프로필 이미지
themoon007

작성한 질문수

질문하기