文書   >   Foundation   >   Numbers,Data,and Basic Values   >   Data   >   NSData   >   init(bytesNoCopy:length:deallocator:)
イニシャライザ
init(bytesNoCopy:length:deallocator:)
指定されたバッファから指定されたバイト数のデータで満たされたデータオブジェクトを、カスタムのデアロケータブロックで初期化します。
宣言
init(bytesNoCopy bytes: UnsafeMutableRawPointer, length: Int, deallocator: ((UnsafeMutableRawPointer, Int) -> Void)? = nil)
パラメータ
bytes | 新しいオブジェクトのデータを含むバッファ。 |
length | bytes から保持すべきバイト数。この値は、bytes の長さを超えてはいけません。 |
deallocator | 結果の NSData オブジェクトの割り当てが解除されたときに呼び出すべきブロック。 |
戻り値
バッファーの bytes から length のバイトのデータを加えて初期化されたデータオブジェクト。返されるオブジェクトは、元の受信者とは異なる場合があります。
議論
このメソッドを使用して、ユーザーが指定したデータ・バッファーの独自の割り振り解除動作を定義します。
不慮の強い循環参照を避けるために、NSData オブジェクトへの強い参照を順番に保持している全てのオブジェクトへのポインタをキャプチャしないようにする必要があります。これには、self への明示的な参照と、直接的なインスタンス変数アクセスによる self への暗黙的な参照が含まれます。deallocator ブロックは、これらの参照を避けやすくするために、buffer へのポインタとその length の 2 つのパラメータをとります。ブロック外からの参照を使用するのではなく、常にこれらの値を使用する必要があります。
以下も見よ
データの作成
init(bytes: UnsafeRawPointer?, length: Int)
指定されたバッファからコピーされた、指定のバイト数で満たさられたデータオブジェクトを初期化します。
init(bytesNoCopy: UnsafeMutableRawPointer, length: Int)
指定されたバッファからの指定されたバイト数のデータで満たされたデータオブジェクトを初期化します。
init(bytesNoCopy: UnsafeMutableRawPointer, length: Int, freeWhenDone: Bool)
指定されたバッファから指定されたバイト数を加えることによって、新しく割り当てられたデータオブジェクトを初期化します。
別のデータオブジェクトの内容でデータオブジェクトを初期化します。