Swift设置变量内联还是函数?

时间:2015-10-02 17:45:01

标签: ios swift ios8 ios9

用于设置已知值的变量的Swift标准是什么?以下是我想到的两种不同方式。

选项1:在类中声明变量,然后在ViewDidLoad方法中设置

class ViewController: UIViewController {
    var refreshControl: UIRefreshControl!
    var sampleString: String!

    override func viewDidLoad() {
        super.viewDidLoad()
        refreshControl = UIRefreshControl()
        sampleString = "Hello"
    }
}

选项2:在类中声明变量并将其设置为内联

class ViewController2: UIViewController {
    var refreshControl = UIRefreshControl()
    var sampleString = "Hello"

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

在Swift中执行此操作的首选方法是什么?提前谢谢!

1 个答案:

答案 0 :(得分:4)

首先,在两个示例中,您有两种根本不同的类型。在第一个示例中,类型是隐式展开的可选String(即String!),这意味着它可以接受nil值。在第二个示例中,它只是String。如果值不需要nil可分配,则第二个选项更好。

关于你的实际问题。我会说第二个选项是可取的,因为你之前初始化了这个值,并且在初始化之前你没有机会使用它。这类似于将类型声明为String并将初始化推迟到init方法。

viewDidLoad方法仅对UIViewController个实例有用,并且在加载视图之前不会被调用(通常是在演示期间)。在此之前等待初始化值可能不是首选,并且在不包含UIViewController的对象中不会有用。