0
我正在創建NSView的子類。
以下是從操場NSView子類中的ByPass init(編碼器)
class MyTableCell :NSView {
let firstName : String
init(name: String) {
firstName = name
super.init()
}
required init?(coder: NSCoder) {
super.init(coder: coder) <-- ERROR: firstName not initialised
}
}
let myName = "Test-Name"
var cell = MyTableCell(name: myName)
如何擺脫錯誤需要的firstName中的init(編碼器)來初始化我的代碼。
我不會從IB的任何類型的MyTableCell視圖。
(我同意按快捷設計,需要一個初始化所有的常數超類初始化器被調用之前,但有什麼辦法在這裏?難道我做任何設計錯誤?)
更好的方式來想起來,這是* *實施,並明確崩潰,而不是默默地做着錯誤的事情在ObjC 。你總是需要一些東西,因爲雖然你可能不願意從一個筆尖加載視圖,但他們被允許,並且Swift試圖掩蓋可能發生的事情,而不僅僅是期望的事情。 (畢竟,錯誤幾乎總是由於「不應該」發生,但實際發生的事情)。 – 2015-04-06 18:47:07
@RobNapier你知道編譯器是否以某種特殊的方式處理'fatalError'? – 2015-04-06 18:50:28
絕對。它包含'@ noreturn'屬性,它告訴編譯器該調用不會返回,所以其他所有內容都是不相關的。 – 2015-04-06 18:52:12