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
.
设置您已知其值的变量的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
.