我想知道为什么将像UILable类型的IBoutlet声明为:
@IBoutlet weak var theNameOfThelable: UILabel!
而不是:@IBoutlet weak var theNameOfThelable = UILabel()
如果我成功了,将会发生什么:
@IBoutlet weak var theNameOfThelable = UILabel()
在下面的代码中,
@IBoutlet weak var theNameOfThelable: UILabel!
上面的语句是隐式展开的可选。这意味着以后将不仅在init
中分配其值。
此外,一旦在@IBOutlet
之后和init
之前,将插座连接到情节提要板,就会自动分配viewDidLoad()
。>
另一方面,
@IBoutlet weak var theNameOfThelable = UILabel()
这里您正在为
UILabel()
分配一个全新的outlet
实例。这将不会连接到storyboard
。
[在两种情况下,UILabel!
和UILabel()
的分配都是不同的。您仍然可以访问UILabel
的属性。只有在使用UILabel!
之前没有连接它的情况下,应用程序才会引发运行时异常