如何在 viewDidLoad 方法内部的 UIViewController 中初始化方法

how to initialize methods in a UIViewController inside of a viewDidLoad method

有一种创建数据的方法。此方法只需调用一次。所以目前这是结构:

var dataCreated : Bool? = false



override func viewDidLoad() {
    super.viewDidLoad()

    if dataCreated! == false {
        createData()
        self.dataCreated = true
    }
}

这是确保 createData() 方法只被调用一次的正确方法吗?谢谢。

因为你只希望 createData 在你的视图控制器的每个实例中被调用一次,那么使用 viewDidLoad 是调用它的好地方。此外,由于 viewDidLoad 仅在视图控制器的每个实例中调用一次,因此不需要 dataCreated 属性。你可以删除它。

override func viewDidLoad() {
    super.viewDidLoad()

    createData()
}

另一种选择是从视图控制器的 init 方法调用 createData。这取决于 createData 需要访问什么。如果 createData 方法需要访问视图和出口,那么您必须使用 viewDidLoad.

您的代码将按预期工作。您可能更愿意通过检查数据是否存在来计算数据是否已创建,而不是跟踪单独的布尔变量。虽然这也行。