Initializer

init(bytesNoCopy:length:deallocator:)

Initializes a data object filled with a given number of bytes of data from a given buffer, with a custom deallocator block. 与えられたバッファからの、与えられたバイト数のデータで満たされたデータオブジェクトを初期化します、あるあつらえのデアロケータブロックを使います。

Declaration 宣言

init(bytesNoCopy bytes: UnsafeMutableRawPointer, 
length: Int, 
deallocator: ((UnsafeMutableRawPointer, Int) -> Void)? = nil)

Parameters パラメータ

bytes

A buffer containing data for the new object. 新しいオブジェクトに対するデータを含んでいるバッファ。

length

The number of bytes to hold from bytes. This value must not exceed the length of bytes. bytesから保持することになるバイト数。この値は、bytesの長さを越えてはなりません。

deallocator

A block to invoke when the resulting NSData object is deallocated. 結果のNSDataオブジェクトがデアロケートされる時に発動するブロック。

Return Value 戻り値

A data object initialized by adding to it length bytes of data from the buffer bytes. The returned object might be different than the original receiver. それにlengthバイトのデータをバッファbytesから追加することによって初期化されるデータオブジェクト。返されるオブジェクトは、オリジナルのレシーバとは異なるかもしれません。

Discussion 議論

Use this method to define your own deallocation behavior for the data buffer you provide. このメソッドを使ってあなた独自のデアロケーション挙動をあなたが提供するデータバッファに対して定義してください。

In order to avoid any inadvertent strong reference cycles, you should avoid capturing pointers to any objects that may in turn maintain strong references to the NSData object. This includes explicit references to self, and implicit references to self due to direct instance variable access. To make it easier to avoid these references, the deallocator block takes two parameters, a pointer to the buffer, and its length; you should always use these values instead of trying to use references from outside the block. 何らかの不注意による強い参照循環を防ぐために、あなたは逆にNSDataオブジェクトへの強い参照を保守するかもしれない何らかのオブジェクトへのポインタをキャプチャすることを避けるべきです。これは、selfへの明示的な参照、そして直接のインスタンス変数アクセスが原因での暗黙的なselfへの参照を含みます。それらの参照を防止するのをより簡単にするために、deallocatorは2つのパラメータを取ります、bufferへのポインタ、そしてそれの長さ;あなた常にそれらの値を、ブロックの外側からの参照を使おうと試みる代わりに使用すべきです。

See Also 参照

Creating Data データを作成する