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

Swift setting variable inline or in function?

设置您已知其值的变量的Swift标准是什么?这是我想到的两种不同方式。

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

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

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

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

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

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

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

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

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

viewDidLoad 方法仅对 UIViewController 实例有用,并且在加载视图(通常是在演示期间)之前不会被调用。等到那时才初始化一个值可能不是首选,并且对不子类化的对象没有用 UIViewController.