Swift:为什么init?(长度length:Int)NSMutableData的初始化器failable?
问题描述:
内存分配可能会失败,但我认为Swift不处理这种情况。 上github代码调用非failable初始化Swift:为什么init?(长度length:Int)NSMutableData的初始化器failable?
public convenience init?(length: Int) {
let memory = malloc(length)
self.init(bytes: memory, length: length, copy: false) { buffer, amount in
free(buffer)
}
}
编辑: 的代码是从原生斯威夫特Foundation框架斯威夫特3.未来
答
从SWIFT用户列表:
“Swift关于内存分配失败的策略是,如果无法处理固定大小的对象分配,则认为它是运行时失败的.OTOH,可以接受变量和任意大量分配的API应该是可分解的。类别。” -Chris
有趣的问题。您可以在https://swift.org/community/#mailing-lists上的邮件列表中找到更好的答案。 –
看起来他们只是预留了未来可能性失败而未事后更改接口。 – Darko