siteline / swiftui-introspect

Introspect underlying UIKit/AppKit components from SwiftUI
MIT License
5.69k stars 352 forks source link

Memory leaking #441

Open kacperd opened 3 weeks ago

kacperd commented 3 weeks ago

Description

It looks like the IntrospectionAnchorPlatformViewController and IntrospectionPlatformViewController are never deallocated even though the SwiftUI views they are wrapping are not visible on the screen. This results in dozens of them being allocated and grows memory consumption.

Screenshot 2024-10-28 at 13 09 46

The code that I use is a view modifier to calculate global frame of the view using UIKit:

struct GlobalFrameCalculator: ViewModifier {

    @Binding var frame: CGRect?
    var callback: ((CGRect?) -> Void)?

    func body(content: Content) -> some View {
        content
            .introspect(.view, on: .iOS(.v15, .v16, .v17, .v18)) { view in
                let globalFrame = view.globalFrame
                frame = globalFrame
                callback?(globalFrame)
            }
    }
}

Is there something wrong with how I use introspect of is this a bug in the library?

Checklist

Expected behavior

No response

Actual behavior

No response

Steps to reproduce

No response

Version information

No response

Destination operating system

No response

Xcode version information

No response

Swift Compiler version information

No response