将nil作为UnsafePointer<UInt8>传递

4
在Swift 2.2中,我可以将nil作为有效参数传递给需要UnsafePointer<UInt8>的函数。然而在Swift 3中,我不能再这样做了。
func myFuncThatTakesAPointer(buffer: UnsafePointer<UInt8>, length: Int) { /** **/ }

myFuncThatTakesAPointer(buffer: nil, length: 0)
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)
                                ^

现在我是否需要将指针声明作为可选项在我的函数中进行指定?


4
请查看此链接 - OOPer
1个回答

6
我现在的函数中是否需要将指针声明为可选项?
简而言之,是的。从发布说明中可以看到:
UnsafePointer、UnsafeMutablePointer、AutoreleasingUnsafeMutablePointer、OpaquePointer、Selector和NSZone类型现在代表非空指针,也就是说,这些指针永远不为nil。现在使用Optional来表示可空指针,例如,UnsafePointer<Int>?

谢谢Matt,恭喜你达成20万! - JAL
谢谢,但如果你不想的话,你不必把我推上去,我会到达那里。 :) 我意识到我的回答有点烦人。 :))) - matt
没问题,我显然需要花更多的时间阅读语言提案。 - JAL
1
实际上,我指向你的发布说明文档更好。语言提案可能会让人感到困惑;仅仅因为他们接受了某些东西并不意味着它已经在公共版本中实现,或者他们按照提案所说的方式实现了它。 - matt
1
@matt,最好检查两份文档,因为提案中包含更改的动机。 - user28434'mstep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接