0%

NSData与它的属性bytes

NSData与它的属性bytes

1
2
3
NSString* enString= @"abc";
NSData* utf8EnData = [enString dataUsingEncoding:NSUTF8StringEncoding];

bytes属性:

1
2
3
4
5
6
/*
The -bytes method returns a pointer to a contiguous region of memory managed by the receiver.
If the regions of memory represented by the receiver are already contiguous, it does so in O(1) time, otherwise it may take longer
Using -enumerateByteRangesUsingBlock: will be efficient for both contiguous and discontiguous data.
*/
@property (readonly) const void *bytes NS_RETURNS_INNER_POINTER;

bytes属性指向的是NSData对象装载的内容.NSData装载的二进制内容在内存中的分布可能是连续的一片,也可能是不连续的.使用- (void) enumerateByteRangesUsingBlock:(void (NS_NOESCAPE ^)(const void *bytes, NSRange byteRange, BOOL *stop))block遍历所有的分布区域.

NSData对象本身的地址与装载的二进制内容的地址,如下图:

可以看到NSData对象本身的地址与二进制内容所在的地址是不同的.二者内存位置相距还挺远的.

查看NSData对象装载的二进制内容方法:

觉得文章有帮助可以打赏一下哦!