Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在viewDidLoad方法内部初始化UIViewController中的方法_Ios_Swift_Viewdidload - Fatal编程技术网

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

Ios 如何在viewDidLoad方法内部初始化UIViewController中的方法,ios,swift,viewdidload,Ios,Swift,Viewdidload,有一种创建数据的方法。此方法只需调用一次。因此,目前的结构是: var dataCreated : Bool? = false override func viewDidLoad() { super.viewDidLoad() if dataCreated! == false { createData() self.dataCreated = true } } 这是确保只调用一次createData()方法的正确方法吗?谢谢。因为

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

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

,因为您只希望视图控制器的每个实例调用
createData
,因此使用
viewDidLoad
是调用它的好地方。此外,由于视图控制器的每个实例只调用一次
viewDidLoad
,因此不需要
dataCreated
属性。你可以把它去掉

override func viewDidLoad() {
    super.viewDidLoad()

    createData()
}

另一个选项是从视图控制器的
init
方法调用
createData
。这取决于
createData
需要访问的内容。如果
createData
方法需要访问视图和出口,则必须使用
viewDidLoad

您的代码将按预期工作。您可能更希望通过检查数据是否存在来计算数据是否已创建,而不是跟踪单独的布尔变量。尽管这也会起作用。

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

定义“一次”。创建此视图控制器的每个实例一次?每次应用程序运行一次?在正在安装的应用程序的生命周期内只调用一次?创建的视图控制器的每个实例调用一次
viewdiload
仅对创建的视图控制器的每个实例调用一次定义为“一次”。创建此视图控制器的每个实例一次?每次应用程序运行一次?在正在安装的应用程序的生命周期内只调用一次?创建此视图控制器的每个实例调用一次
viewdiload