NSData: NSObject
@interface NSData: NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
//获取data长度的属性
@property (readonly) NSUInteger length;
//返回data对象的首指针
@property (readonly) const void *bytes;
NSData (NSExtendedData)
//返回一个ASCII编码格式的字符串,采用的格式是data属性列表的格式
@property (readonly, copy) NSString *description;
//取出data中指定长度的字节存入buffer这个提前声明的数组中
- (void)getBytes:(void *)buffer length:(NSUInteger)length;
//取出data中指定位置range的字节存入buffer这个提前声明的数组中
- (void)getBytes:(void *)buffer range:(NSRange)range;
//判断两个data是否相等
- (BOOL)isEqualToData:(NSData *)other;
//截取data指定位置的子data
- (NSData *)subdataWithRange:(NSRange)range;
//将data写入指定的文件
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
//将data写入指定的url
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
//将data写入指定文件,并且有写入过程的设置条件,带错误信息
- (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)writeOptionsMark error:(NSError **)errorPtr;
//将data写入指定的url,并且有写入过程的设置条件,带错误信息
- (BOOL)writeToURL:(NSURL *)url options:(NSDataWritingOptions)writeOptionsMark error:(NSError **)errorPtr;
//搜索在data1内部存在data2的位置,并且有搜索配置条件,并且可加入的搜索的范围
- (NSRange)rangeOfData:(NSData *)dataToFind options:(NSDataSearchOptions)mark range:(NSRange)searchRange;
//列举遍历字典的方法
- (void)enumerateByteRangesUsingBlock:(void (^)(const void *bytes, NSRange byteRange, BOOL *stop))block;
NSData (NSDataCreation)
//data的快速创建办法
+ (instancetype)data;
//赋值以bytes开头,长度为length的数据,进行初始化使其成为数据对象的内容
+ (instancetype)dataWithBytes:(const void *)bytes length:(NSUInteger)length;
//这个方法生成的data中保存的是指向数据的指针,并没有对数据进行复制操作
+ (instancetype)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
//这个方法生成的data中保存的是指向数据的指针,并没有对数据进行复制操作。当flag为yes的时候,生成的data对象是bytes的所有者,当data对象被释放的时候也会同时释放bytes,所以bytes必须是通过malloc在堆上分配的内存。当flag为no的时候,bytes不会被自动释放,释放bytes时要注意时机,不要再data对象还被使用的时候释放bytes。
&