2016-10-11 21 views
2

Swift 2.2では、有効なパラメータとしてを必要とする有効なパラメータとしてnilを渡すことができました。スウィフト3では、私はもはやそれを行うことができます。UnsafePointerとしてnilを渡す<UInt8>

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

[こちら](https://github.com/apple/swift-evolution/blob/master/proposals/0055-optional-unsafe-pointers.md)を確認してください。 – OOPer

答えて

3

私の関数でポインタ宣言をオプションに指定する必要がありましたか?

つまり、はいです。 release notesから:

種類UnsafePointer、UnsafeMutablePointer、AutoreleasingUnsafeMutablePointer、OpaquePointer、セレクタ、およびNSZoneは現在、null非許容ポインタ-つまり、nilになることはありませんポインタを表します。 null許容ポインタは、たとえば、UnsafePointer<Int>?のようにOptionalを使用して表されます。

+0

おかげで、200kのおめでとう! – JAL

+0

ありがとうございますが、あなたがしたくない場合は、私の上に私を置く必要はありません、私はそこに着くでしょう。 :)私は私の答えは迷惑なものだと分かります。 :))) – matt

+0

それはすべて良いです、私は明らかに言語の提案を読むより多くの時間を費やす必要があります。 – JAL

関連する問題