简体   繁体   English

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

[英]Swift: Why is the init?(length length: Int) NSMutableData's initializer failable?

The memory allocation can fail, but I think Swift doesn't handle that cases. 内存分配可能会失败,但我认为Swift不会处理这种情况。 The code on github calls a non failable initializer github上的代码调用一个不可用的初始化程序

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

EDIT: The code is from the native-Swift Foundation framework coming in Swift 3. 编辑:代码来自Swift 3中的native-Swift Foundation框架。

From the swift-users list: 来自swift-users列表:

"Swift's policy on memory allocation failure is that fixed-size object allocation is considered to be a runtime failure if it cannot be handled. OTOH, APIs that can take a variable and arbitrarily large amount to allocate should be failable. NSData falls into the later category." “Swift关于内存分配失败的策略是,如果无法处理,固定大小的对象分配被认为是运行时失败.OTOH,可以采用变量和任意大量分配的API应该是可用的.NSData属于后者类别。” -Chris -克里斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 singleton class 中的可失败初始化与 swift 中的私有初始化程序 - failable init in singleton class with private initializer in swift 为什么 UserDefaults.init(suiteName:) 是一个可失败的初始化程序? - Why is UserDefaults.init(suiteName:) a failable initializer? 在Swift中实现Failable Initializer时,为什么要使用`init!`而不是`init?`? - Why would you use `init!` instead of `init?` when implementing a Failable Initializer in Swift? 为什么不能使用if语法在初始化器中从子类的非失败初始化器中调用失败的初始化器? [迅速] - why is it not possible to use if let syntax in an initializer to call a failable initializer from a subclass’s nonfailable initializer? [swift] Swift:“failable initializer'init()'不能覆盖不可用的初始化程序”与默认参数 - Swift: “failable initializer 'init()' cannot override a non-failable initializer” vs. default parameters 为Swift覆盖失败的初始化程序 - Overriding a Failable Initializer for Swift SwiftyJSON的Swift失败初始化器 - Swift Failable Initializer with SwiftyJSON 用于方便初始化的可用初始化程序失败 - Failable initializer for convenience init fails init的目的是什么! 可用的初始化程序? - What is the purpose of the init! failable initializer? 失败的初始值设定项'init(fileURL :)无法覆盖非失败的初始值设定项 - Failable Initializer 'init(fileURL:) cannot override a non-failable initializer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM