お世話になっております。
UE4のUObjectがGCに回収されないためにTSharedPtrが使用できるのかどうか
ご教示いただけないでしょうか。
m_Object = MakeShareable(NewObject());
こう書いた場合、m_Objectという変数はUPROPERTY()を付けず、UObjectを継承『しない』クラスの
メンバー変数に保持されていてもGCに回収されずにすむでしょうか。
それともTSharedPtrはstd::shared_ptrをただ書き直しただけで、UE4に搭載されているGCとは
何も関係がいないかというのがよくわかっておらず。
お忙しいところ大変申し訳ありません
以上よろしくお願いします。
お世話になっております。
はい。UObjectによるGCのシステムに関してTSharedPtrは無関係のため、GC回収されないためには、UProperyをつけたりAddToRootをしたりAddReferencedObjectsなどによって参照関係を作成する必要がございます。
AnswerHubですが、Epic Staffがご返答している以下が参考になるかと思います。
TSharedPtr(やMakeSharableなど)はUObjectに関して呼び出すものではなく、エンジン内部ではUObjectではないF~などのクラスのために使用しております。
返信遅くなり申し訳ありません。
なるほどそうですよね!勘違いしていなぞのハングを繰り返していました。
回答ありがとうございました!