我的视图控制器中的代码在 Swift playground 中多次 运行

The code in my view controller is running multiple times in Swift playground

我正在尝试制作一个应用程序,它只是一个背景和一个按钮,当按下该按钮时,会出现具有另一个背景的第二个视图。我从以下位置获得了 UIImage 的代码:https://youtu.be/4wodsPzFHQk

import UIKit
import PlaygroundSupport

final class MyViewController: UIViewController {
    
    override func loadView() {
        let view = UIView()
        let BG = UIImageView(frame: UIScreen.main.bounds)
        BG.image = UIImage(named:"Photo.png")
        BG.contentMode = .scaleAspectFill
        BG.insertSubview(view, at:0)        
    }    
}

PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = MyViewController()

问题是,当我 运行 带有函数的代码单步执行我的代码时,我看到从 override func loadView()BG.insertSubview(view, at:0) 的代码多次 运行 .

来自loadView() documentation

The view controller calls this method when its view property is requested but is currently nil. This method loads or creates a view and assigns it to the view property.

由于 MyViewController 中的 loadView 实现从未分配 view 属性,它仍然是 nil,这意味着下一次 view 属性 被访问,loadView 被再次调用。

要解决此问题,您可以在 loadView 实施的末尾添加 self.view = view