Swift:为什么init?(长度:Int)NSMutableData的初始化程序可以使用?

时间:2016-04-14 11:34:49

标签: swift swift2 nsdata initializer failable

内存分配可能会失败,但我认为Swift不会处理这种情况。 github上的代码调用了一个不可用的初始化程序

public convenience init?(length: Int) {
    let memory = malloc(length)
    self.init(bytes: memory, length: length, copy: false) { buffer, amount in
        free(buffer)
    }
}

编辑: 代码来自Swift 3中的native-Swift Foundation框架。

1 个答案:

答案 0 :(得分:1)

来自swift-users列表:

" Swift关于内存分配失败的政策是,如果无法处理固定大小的对象分配,则认为它是运行时失败。 OTOH,可以采用可变且任意大量分配的API应该是可用的。 NSData属于后一类。" -Chris