From d7071d7a4ad55d7eef4ce250ececab61d720cbb1 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Fri, 10 Oct 2025 10:07:07 -0400 Subject: [PATCH] fix: Prevent GutenbergKit retain cycle The memory leak likely leads to performance degradations and crashes. --- .../NewGutenberg/NewGutenbergViewController.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift index cd9e5ed22d1c..a7f473c72092 100644 --- a/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift @@ -113,8 +113,8 @@ class NewGutenbergViewController: UIViewController, PostEditor, PublishingEditor private var hasEditorStarted = false private var isModalDialogOpen = false - lazy var autosaver = Autosaver() { - self.performAutoSave() + lazy var autosaver = Autosaver() { [weak self] in + self?.performAutoSave() } // MARK: - Private Properties @@ -197,6 +197,14 @@ class NewGutenbergViewController: UIViewController, PostEditor, PublishingEditor deinit { tearDownKeyboardObservers() + + // Cancel any pending tasks + editorLoadingTask?.cancel() + + // Clean up child view controller + editorViewController.willMove(toParent: nil) + editorViewController.view.removeFromSuperview() + editorViewController.removeFromParent() } // MARK: - Lifecycle methods