From ed0c2bea80e735c0a948bf8c9dcf2a2c383b18f6 Mon Sep 17 00:00:00 2001 From: Hiroshi Kimura Date: Thu, 25 Sep 2025 20:48:00 +0900 Subject: [PATCH] =?UTF-8?q?Revert=20"Run=20body=20closure=20inside=20Swift?= =?UTF-8?q?UI.View.body=20to=20activate=20observation=20tra=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 368cf3514923ba826d76b397e13b7b3478e18243. --- .../SwiftUIHosting/SwiftUIHostingView.swift | 27 ++++--------------- .../SwiftUIHostingViewController.swift | 10 +++---- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/Sources/SwiftUIHosting/SwiftUIHostingView.swift b/Sources/SwiftUIHosting/SwiftUIHostingView.swift index 109fa7d..20c07f8 100644 --- a/Sources/SwiftUIHosting/SwiftUIHostingView.swift +++ b/Sources/SwiftUIHosting/SwiftUIHostingView.swift @@ -1,23 +1,9 @@ import SwiftUI -private struct Wrapper: View { - - let content: () -> Content - - init(@ViewBuilder content: @escaping () -> Content) { - self.content = content - } - - var body: some View { - content() - } - -} - /// A view that hosts SwiftUI for UIKit environment. open class SwiftUIHostingView: UIView { - private let hostingController: HostingController>> + private let hostingController: HostingController> public let configuration: SwiftUIHostingConfiguration @@ -27,16 +13,13 @@ open class SwiftUIHostingView: UIView { _ function: StaticString = #function, _ line: UInt = #line, configuration: SwiftUIHostingConfiguration = .init(), - @ViewBuilder content: @escaping @MainActor () -> Content + @ViewBuilder content: @MainActor () -> Content ) { self.configuration = configuration - let usingContent = Wrapper { - // Let SwiftUI Observation works - content().modifier(configuration.baseModifier) - } - + let usingContent = content().modifier(configuration.baseModifier) + #if DEBUG self.hostingController = HostingController( @@ -199,7 +182,7 @@ open class AnySwiftUIHostingView: SwiftUIHostingView { _ function: StaticString = #function, _ line: UInt = #line, configuration: SwiftUIHostingConfiguration = .init(), - @ViewBuilder content: @escaping @MainActor () -> AnyViewContent + @ViewBuilder content: @MainActor () -> AnyViewContent ) { super.init( name, diff --git a/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift b/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift index b51ed32..d044efd 100644 --- a/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift +++ b/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift @@ -40,19 +40,15 @@ open class SwiftUIHostingViewController: UIViewController { super.viewDidLoad() + let _content = content(self) + let contentView = SwiftUIHostingView( name, file, function, line, configuration: configuration - ) { [weak self] in - if let self { - content(self) - } else { - EmptyView() - } - } + ) { _content } view.addSubview(contentView) contentView.translatesAutoresizingMaskIntoConstraints = false