用于设置已知值的变量的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中执行此操作的首选方法是什么?提前谢谢!
答案 0 :(得分:4)
首先,在两个示例中,您有两种根本不同的类型。在第一个示例中,类型是隐式展开的可选String
(即String!
),这意味着它可以接受nil
值。在第二个示例中,它只是String
。如果值不需要nil
可分配,则第二个选项更好。
关于你的实际问题。我会说第二个选项是可取的,因为你之前初始化了这个值,并且在初始化之前你没有机会使用它。这类似于将类型声明为String
并将初始化推迟到init
方法。
viewDidLoad
方法仅对UIViewController
个实例有用,并且在加载视图之前不会被调用(通常是在演示期间)。在此之前等待初始化值可能不是首选,并且在不包含UIViewController
的对象中不会有用。