我最近接手了Swift,以了解如何编写iOS应用程序。我一直在关注Skip Wilson的教程,并且在他连接插座时得到了:
@IBOutlet var ticTacImg1: UIImageView = nil
而不是让我获得:
@IBOutlet var ticTacImg1: UIImageView!
如果我尝试更改它,Xcode会告诉我这是一个错误。我做错了什么?
答案 0 :(得分:3)
在Xcode 6的早期版本中,任何标记为@IBOutlet
的内容都会变成弱隐式展开的可选内容。
那是
@IBOutlet var ticTacImg1: UIImageView = nil
将编译为
@IBOutlet weak var ticTacImg1: UIImageView! = nil
这已不再适用。现在您必须声明其可选状态,但它仍然很弱。
那是
@IBOutlet var ticTacImg1: UIImageView! = nil
将编译为
@IBOutlet weak var ticTacImg1: UIImageView! = nil
ticTacImg1
未初始化为nil
的原因是无关紧要。在Swift中,未初始化的隐式解包选项具有值nil
,因此= nil
是多余的。
答案 1 :(得分:1)
@IBOutlet var ticTacImg1: UIImageView!
是正确的代码。
@IBOutlet
属性必须是可选的,因为它在系统将视图连接到它之前最初具有nil
值。使用!
将其标记为隐式展开的可选项意味着它将在使用时自动解包。
我不确定你引用了哪个具体的教程,但我最初的想法是他可能正在使用Xcode 6的早期测试版,并没有强制执行此操作。