見到這種情景,在swift中,爲什麼UIlabel是可選的?
@IBOutlet weak var label1 : UILabel!
爲什麼的UILabel是一個可選?我建立了與該UILabel的IBOutlet連接的事實意味着UILabel DEFINATELY存在,並且不會爲零。那麼爲什麼它是可選的UIlabel?
而不是UILabel
?
見到這種情景,在swift中,爲什麼UIlabel是可選的?
@IBOutlet weak var label1 : UILabel!
爲什麼的UILabel是一個可選?我建立了與該UILabel的IBOutlet連接的事實意味着UILabel DEFINATELY存在,並且不會爲零。那麼爲什麼它是可選的UIlabel?
而不是UILabel
?
這是因爲非可選變量必須在構造函數中初始化並保留所有生命週期。
IBOutlets也很弱,這意味着它可以成爲零,例如,查看控制器仍然活着。
如果我可能再問一個問題,在Swift中所有弱變量都是可選的嗎? – BossGiveMeArrays
是的,因爲他們可以改爲零,而lifecicle。 –
這是關於View Controller生命週期如何真正起作用的。 在繼續之前,讓我們先了解模型,視圖和控制器。
視圖控制器對象本身在視圖加載之前被實例化,即您的標籤。在此期間,由於視圖甚至沒有加載,所以標籤上沒有參考,因爲它仍然需要從故事板創建。
因爲這個原因,這個對象在一個非常短的不可知的時刻變成零。並且,當加載視圖時:ViewController
,viewDidLoad()
,那麼只有標籤引用被分配給變量。
這概述了爲什麼可選項在iOS中真正使用的一個簡短說明。
首先是它的IBOutlet而不是IBAction。這是因爲如果你不在xib連接插座,它會返回你沒有價值的標籤。 –
你如何想象弱的非可選屬性? –
爲什麼在UILabel上有一個IBAction? – Ariel