我正在尝试理解以下这个“人为的”示例:
protocol MyProtocol {
init?(string: String)
}
class MyObject: MyProtocol {
let s: String
required init(string: String) {
self.s = string
}
}
let o = MyObject(string: "test")
print(o.s)
MyProtocol
声明了一个可失败的初始化器。MyObject
符合MyProtocol
,示例代码编译并执行没有问题。
我的问题是:为什么MyObject
不必提供一个可失败的初始化器(根据MyProtocol
)?
MyObject
的初始化器。它被拥有相同签名的不可失败的初始化器所取代。你仍然必须提供具有相同签名的初始化器才能使代码编译通过。我猜这是一个不能失败的可失败初始化器。在某种程度上是这样。 - Fogmeister.Some
的初始化对象将满足您的协议。 - NSGangster