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