在SWIFT2.2中,我能够将nil作为一个有效的参数传递给一个需要UnsafePointer<UInt8>的函数。在Swift 3中,我再也不能这样做了:
func myFuncThatTakesAPointer(buffer: UnsafePointer<UInt8>, length: Int) { /** **/ }
myFuncThatTakesAPointer(buffer: nil, length: 0)操场执行失败:错误:Xcode8游乐场- is .游乐场:62:33:错误:0与预期的参数类型'UnsafePointer‘myFuncThatTakesAPointer不兼容(缓冲区:零,长度: 0) ^
现在是否需要将函数中的指针声明指定为可选的?
发布于 2016-10-11 14:31:07
现在是否需要将函数中的指针声明指定为可选的?
一句话,是。来自发布说明
类型UnsafePointer、UnsafeMutablePointer、AutoreleasingUnsafeMutablePointer、OpaquePointer、Selector和NSZone现在表示不可空的指针--也就是说,从未为零的指针。现在可以使用可选指针(例如
UnsafePointer<Int>?)来表示可空指针。
https://stackoverflow.com/questions/39979619
复制相似问题