From 11b068c3f79f32709d494473c9e7a4239369a732 Mon Sep 17 00:00:00 2001 From: Mx-Iris Date: Sat, 16 Aug 2025 23:33:28 +0800 Subject: [PATCH] Fix NSHostingView dealloc issue --- .../PlatformHostingControllerHelper.swift | 16 ++++++++++++++++ ...earanceActionModifierCompatibilityTests.swift | 10 ++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Sources/OpenSwiftUITestsSupport/Integration/PlatformHostingControllerHelper.swift b/Sources/OpenSwiftUITestsSupport/Integration/PlatformHostingControllerHelper.swift index 0c61fe46f..0a8b2df55 100644 --- a/Sources/OpenSwiftUITestsSupport/Integration/PlatformHostingControllerHelper.swift +++ b/Sources/OpenSwiftUITestsSupport/Integration/PlatformHostingControllerHelper.swift @@ -44,6 +44,10 @@ package func triggerLayoutWithWindow( vc.triggerLayout() window = vc.view.window } + #if os(macOS) + window.isReleasedWhenClosed = false + window.close() + #endif withExtendedLifetime(window) {} } @@ -57,6 +61,10 @@ package func triggerLayoutWithWindow( vc.triggerLayout() window = vc.view.window } + #if os(macOS) + window.isReleasedWhenClosed = false + window.close() + #endif withExtendedLifetime(window) {} } @@ -73,6 +81,10 @@ package func triggerLayoutWithWindow( window = vc.view.window } } + #if os(macOS) + window.isReleasedWhenClosed = false + window.close() + #endif withExtendedLifetime(window) {} } @@ -89,6 +101,10 @@ package func triggerLayoutWithWindow( window = vc.view.window } } + #if os(macOS) + window.isReleasedWhenClosed = false + window.close() + #endif withExtendedLifetime(window) {} } diff --git a/Tests/OpenSwiftUICompatibilityTests/Modifier/ViewModifier/AppearanceActionModifierCompatibilityTests.swift b/Tests/OpenSwiftUICompatibilityTests/Modifier/ViewModifier/AppearanceActionModifierCompatibilityTests.swift index 16bf217b6..a14084603 100644 --- a/Tests/OpenSwiftUICompatibilityTests/Modifier/ViewModifier/AppearanceActionModifierCompatibilityTests.swift +++ b/Tests/OpenSwiftUICompatibilityTests/Modifier/ViewModifier/AppearanceActionModifierCompatibilityTests.swift @@ -7,7 +7,6 @@ import Testing import Foundation import OpenSwiftUITestsSupport -@MainActor struct AppearanceActionModifierCompatibilityTests { @Test func appear() async throws { @@ -70,12 +69,7 @@ struct AppearanceActionModifierCompatibilityTests { ) ) } - #if os(macOS) - // FIXME: NSHostingView is not dealloc here - // See #454 - #expect(Helper.result == "AAD") - #else - #expect(Helper.result == "AADD") - #endif + + await #expect(Helper.result == "AADD") } }