在示例代码中,我看到了两种不同风格的声明对象。一个优于另一个的优点是什么?这两种声明风格之间有什么区别/优点
两个被声明为 var btn: UIButton!
风格1:
btn = UIButton()
btn.translatesAutoresizingMaskIntoConstraints = false
btn.layer.borderColor = UIColor.blue.cgColor
btn.layer.borderWidth = 1
...
self.view.addSubview(btn)
风格2:
btn = {
let b = UIButton()
b.translatesAutoresizingMaskIntoConstraints = false
b.layer.borderColor = UIColor.blue.cgColor
b.layer.borderWidth = 1
...
return b
}()
self.view.addSubview(btn)
我目前看到的唯一的好处是,第二风格使得代码更清晰,当你有许多obj学分。你也可以在Xcode中折叠它们。还有其他优势吗?第二个版本不会在运行时“花费”更多的资源吗? 哪个更好?
感谢
我不知道这是否有所作为,但第二种模式只在所有设置完成后才会分配给'btn'(即不会在发生错误时保留'btn'半初始化) 。 – Thilo
我认为这是有用的一个情况。当你想创建一个对象时,必须在创建时更改/分配一些值,例如一个具有可选属性的结构,init方法不能分配它。但是你同时想保持变量本身不变。 – Surely
在任何情况下都不应将该按钮声明为隐式解包可选。 – nhgrif