UIViewControllerRepresentable странное освобождение

#swiftui

#swiftui

Вопрос:

У меня есть UIViewController, который используется в SwiftUI с помощью UIViewControllerRepresentable.

Когда я возвращаюсь от контроллера к представлению SwiftUI, deinit не вызывается (как я и ожидал).

Однако, когда я выполняю новую навигацию к UIViewControllerRepresentable, сначала вызывается deinit (для предыдущего контроллера)

Есть ли что-то, чего мне не хватает здесь с UIViewControllerRepresentable, почему оно не освобождается?

 import SwiftUI
import UIKit

class MyViewController: UIViewController {

    deinit() {
        print("This isn't called until the second initiation of the UIViewControllerRepresentable")
    }

}

struct MyViewControllerWrapper: UIViewControllerRepresentable {
    typealias UIViewControllerType = MyViewController

    func makeUIViewController(context: UIViewControllerRepresentableContext<MyViewControllerWrapper>) -> MyViewControllerWrapper.UIViewControllerType {
    
        let vc = UIViewControllerType(requestType: requestType)
        return vc
    }

    func updateUIViewController(_ uiViewController: MyViewControllerWrapper.UIViewControllerType, context: UIViewControllerRepresentableContext<MyViewControllerWrapper>) {
    
    }
}
  

Комментарии:

1. Это давно известное поведение NavigationView — оно просто не очищает просмотр последнего посещения, пока он не будет заменен, UIViewControllerRepresentable не имеет к этому никакого отношения.

2. Спасибо, можете ли вы поделиться, где вы узнали эту информацию?