2015-10-04 76 views
2

執行初始化程序必須完成什麼?執行初始化程序必須完成什麼?

a. All properties need to be initialized with a value 

b. All properties need to be explicitly assigned a value. 

c. All non-Optional properties need to be initialized. 
    Sorry, that's incorrect. 
    Optionals need to be initialized as well. 

d. The object needs to be created 

什麼答案是正確的,爲什麼?

+0

我認爲第一個'a'答案是正確的,對象應該初始化它的所有屬性,並且調用'super'(應該初始化'superclass'的所有屬性) – gaussblurinc

回答

1

在我看來這是非常容易混淆的問題。因爲你作爲開發者必須做的是選項c。

看看這個簡單的代碼示例和最小init是編譯

class SomeClass { 
    var a : AnyObject 
    var b : AnyObject? 
    var c : AnyObject! 
    var d = ":)" 

    init() { 
     a = "" 
     print("initialized") 
    } 
} 

swift docu狀態

類和結構必須所有的存儲屬性設置爲一個適當的初始值到創建該類或結構的實例時爲止。存儲的屬性不能處於不確定狀態。

您可以在初始化程序中設置存儲屬性的初始值,或者通過將默認屬性值指定爲屬性定義的一部分。這些操作在以下各節中進行介紹。

選項d。 imho是無意義的,因爲對象創建是由底層運行時環境處理的,而不是通過初始化程序處理的。

現在b。和a。在措辭explicitly assignedinitialized之間保持着微小的差異。因此,我會放棄選擇B,因爲該bc變量不需要任何明確的價值,隱含nil是時間(讀c將沒有工作,雖然)完全正常

所以我的答案選擇是選一個。在init方法之後,所有的屬性都需要有一些特定的值。其中一些顯式地在init函數中,其中一些隱式地。

TL;博士

我最後的答案是選擇一個。

相關問題