diff --git a/frameworks/core/components_ng/base/view_advanced_register.cpp b/frameworks/core/components_ng/base/view_advanced_register.cpp index 68a5a900d18043e2b6c4d95d9536e80d35b942af..db8c986d736ae7ae04658e5b1c84608e6582a741 100644 --- a/frameworks/core/components_ng/base/view_advanced_register.cpp +++ b/frameworks/core/components_ng/base/view_advanced_register.cpp @@ -17,12 +17,12 @@ #include "frameworks/core/components_ng/pattern/root/root_pattern.h" namespace OHOS::Ace::NG { -thread_local ViewAdvancedRegister* ViewAdvancedRegister::instance_ = nullptr; +thread_local std::shared_ptr ViewAdvancedRegister::instance_ = nullptr; -ViewAdvancedRegister* ViewAdvancedRegister::GetInstance() +std::shared_ptr ViewAdvancedRegister::GetInstance() { if (ViewAdvancedRegister::instance_ == nullptr) { - ViewAdvancedRegister::instance_ = new ViewAdvancedRegister(); + ViewAdvancedRegister::instance_ = std::make_shared(); } return ViewAdvancedRegister::instance_; } diff --git a/frameworks/core/components_ng/base/view_advanced_register.h b/frameworks/core/components_ng/base/view_advanced_register.h index cd04cada098906800c5b3c65917c21cbe550f026..e73f6adf4d205760854fc12f95c886dd95bf27ee 100644 --- a/frameworks/core/components_ng/base/view_advanced_register.h +++ b/frameworks/core/components_ng/base/view_advanced_register.h @@ -24,18 +24,19 @@ namespace OHOS::Ace::NG { class ViewAdvancedRegister : public AceType { public: - ACE_FORCE_EXPORT static ViewAdvancedRegister* GetInstance(); - + ACE_FORCE_EXPORT static shared_ptr GetInstance(); + ACE_FORCE_EXPORT RefPtr CreatePagePattern(const RefPtr& pageInfo); + + ViewAdvancedRegister() = default; RefPtr GeneratePattern(const std::string& patternName); RefPtr GenerateStageManager(const RefPtr& stage); private: - ViewAdvancedRegister() = default; + static thread_local shared_ptr instance_; - static thread_local ViewAdvancedRegister* instance_; ACE_DISALLOW_COPY_AND_MOVE(ViewAdvancedRegister); }; } // namespace OHOS::Ace::NG