Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将nil作为非安全指针传递<;UInt8>;_Swift_Swift3_Unsafe Pointers - Fatal编程技术网

Swift 将nil作为非安全指针传递<;UInt8>;

Swift 将nil作为非安全指针传递<;UInt8>;,swift,swift3,unsafe-pointers,Swift,Swift3,Unsafe Pointers,在Swift 2.2中,我能够将nil作为有效参数传递给需要UnsafePointer的函数。在Swift 3中,我不能再这样做: func myFuncThatTakesAPointer(buffer: UnsafePointer<UInt8>, length: Int) { /** **/ } myFuncThatTakesAPointer(buffer: nil, length: 0) func myfunchattakesapointer(缓冲区:UnsafePointe

在Swift 2.2中,我能够将
nil
作为有效参数传递给需要
UnsafePointer
的函数。在Swift 3中,我不能再这样做:

func myFuncThatTakesAPointer(buffer: UnsafePointer<UInt8>, length: Int) { /** **/ }

myFuncThatTakesAPointer(buffer: nil, length: 0)
func myfunchattakesapointer(缓冲区:UnsafePointer,长度:Int){/**/}
myFuncThatTakesAPointer(缓冲区:nil,长度:0)
游乐场执行失败:错误:XCODE8PLAYOND iOS。游乐场:62:33:错误:nil与预期的参数类型“UnsafePointer”不兼容
myFuncThatTakesAPointer(缓冲区:nil,长度:0)
^
现在是否需要将函数中的指针声明指定为可选

现在是否需要将函数中的指针声明指定为可选

总之,是的。从:

类型UnsafePointer、unsafemeutablepointer、autoreleasingunsafemeutablepointer、OpaquePointer、Selector和NSZone现在表示不可为空的指针,即从不为零的指针。现在,可以为空的指针使用可选的方式表示,例如,
UnsafePointer?


请检查。谢谢马特,恭喜你拿到了200k!谢谢,但你不必把我放在首位,如果你不想,我会去的。:)我意识到我的回答有点烦人。:)这一切都很好,我显然需要花更多的时间阅读语言提案。实际上,我指给你看的发行说明文档更好。语言提案可能真的令人困惑;仅仅因为他们接受了某些东西并不意味着它是在公开发布中实施的,或者他们是按照提案中所说的方式实施的。@matt,最好检查两个文档,因为提案包含了改变的动机。
Playground execution failed: error: Xcode8Playground-iOS.playground:62:33: error: nil is not compatible with expected argument type 'UnsafePointer<UInt8>'
myFuncThatTakesAPointer(buffer: nil, length: 0)
                                ^