2014-10-30 31 views
1

我最近採取了Swift爲了學習如何編程iOS應用程序。我一直在關注跳過威爾遜的教程,並有當他連接的出口,並且得到了片刻:Swift:!而不是=無

@IBOutlet var ticTacImg1: UIImageView = nil 

而不是讓我獲得:

@IBOutlet var ticTacImg1: UIImageView! 

,如果我試圖改變它的Xcode告訴我這是一個錯誤。我究竟做錯了什麼?

回答

1

@IBOutlet var ticTacImg1: UIImageView!是正確的代碼。

@IBOutlet屬性需要是可選的,因爲它在系統將視圖連接到它之前最初有一個nil值。標記爲!的隱式解包可選意味着它將在使用時自動解包。

我不確定你正在引用哪個特定的教程,但我最初的想法是,他可能會使用Xcode 6的早期測試版,但並未強制執行此操作。

+0

如果它是零,則會崩潰。 – Abizern 2014-10-30 18:43:27

+0

@Abizern正確,但在大多數情況下,連接到故事板的變量永遠不會在初始化後變爲零。 – nickgraef 2014-10-30 18:48:19

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是多餘的。

相關問題