创建于完成: 2018/02/06

总览: http://www.cnblogs.com/lancgg/p/8404975.html

 数据类 
 简介

处理比特列

Foundation/NSData.h

(1)

生成

- (id) initWithBytes: (const void *) bytes length: (NSUInteger) length

便利的构造函数:

dataWithBytes:length:

以bytes为起点长度length的数据来初始化

是copy,不是原来对象

- (id) initWithBytesNoCopy: (void *) bytes

            length: (unsigned) length

       freeWhenDone: (BOOL) flag

便利的构造函数:

dataWithBytesNoCopy:length:freeWhenDone:

以bytes为起点长度length的数据来初始化

不是copy,是原来对象

flag: YES 自动释放, bytes必须有malloc等生成

NO 手动释放

- (id) initWithData: (NSData *) aData

便利的构造函数:

dataWithData:

从aData生成

aData可以使NSMutableData的实例, 从可变生成不变

+ (id) data

相当于 [[NSData alloc] init];

生成长度0的空的NSData实例

主要用于NSMutableData, 对应init

   

(2)

获取

 - (NSUInteger) length  获取比特列长度
 - (const void *) bytes  获取比特列开头的指针

- (void) getBytes: (void *) buffer length: (NSUInteger) length

获取开头开始长度length的比特列

- (NSData *) subdataWithRange: (NSRange) range

- (void) getBytes: (void) buffer range: (NSRange) range

获取range范围的数据

把range范围的数据写入buffer

- (NSRange) rangeOfData: (NSData *) dataToFind

            options: (NSDataSearchOptions) mask

           range: (NSRange) searchRange

在searchRange范围内寻找dataToFind,找到

返回NSRange类数据。

NSDataSearchOptions可以指定逆序查找等

dataToFind不可以是nil

   
   
   

(3)

比较

 - (BOOL) isEqualToData: (id) anObject  受体的data和anObject内容一致,长度一致时返回YES
   

(4)

文件输入输出

 - (NSString *) description  把data的内容以property list形式生成字符串并返回

- (id) initWithContentsOfFile: (NSString *) path

            options: (NSUInteger) mask

               error: (NSError **) errorPtr

便利的构造函数:

dataWithContentsOfFile:options:error:

读取path文件,作为比特列来初始化

失败的话受体自动释放,变成nil, errorPtr装入详细错误信息

mask: 是否使用虚拟内存等? # TODO: check [mask内容?]

- (id) initWithContentsOfFile: (NSString *) path

便利的构造函数:

dataWithContensOfFile:

 上一个的第二,三参数自动指定为0, NULL

- (BOOL) writeToFile: (NSString *) path

atomically: (BOOL) flag

把受体的比特列写入path指定的文件里,成功返回YES

flag: YES 写入在临时文件,成功后重命名为指定文件 (失败不影响原文件)

   
   
   
   
   
   
NSMutableData 

NSData的子类

Foundation/NSData.h

(1)

生成

- (id) initWithCapacity: (NSUInteger) capacity

便利的构造函数:

dataWithCapacity

指定容量来生成, 不够了自动增加

也可以直接init, 也就是容量为0

- (id) initWithLength: (NSUInteger) capacity

便利的构造函数:

dataWithLength:

 指定比特列长度来生成, 全部比特位用0来填
   
   
   

(2)

获取

 - (void *) mutableBytes

获取比特列

长度为0时返回NULL

和bytes的不同在于获取的比特列可以被改写

   
   

(3)

增加

 - (void) appendData: (NSData *) otherData  在受体的比特列末尾添加上otherData(copy)

- (void) appendBytes: (const void *) bytes

        length: (NSUInteger) length

复制bytes开头到指定长度的比特列到受体末尾

# TODO: check [长度超过bytes时候是什么处理]

   

(4)

变更

- (void) replaceByBytesInRange: (NSRange) range

           withBytes: (const void *) replacementBytes

               length: (NSUInteger) replacementLength

用replacementBytes替换range指定的范围

replacementLength是替换的新字符串的长度

range的长度和replacementLength不同的话,比特列长度自动变化。

range的长度为0时为location后插入

- (void) replaceBytesInRange: (NSRange) range

withBytes: (const void *) bytes

用bytes替换range指定范围的数据

相当于上一个的replacementLength和range的length相同的情况

 - (void) setData: (NSData *) aData  用aData的内容设置受体
 - (void) resetBytesInRange: (NSRange) range  用0重置指定范围的比特列
   

(5)

改变比特列长度

 - (void) increaseLengthBy: (NSUInteger) extraLength

增加指定长度

增加部分都自动用0填埋

 - (void) setLength: (NSUInteger) length

设定比特列长度为length

拉伸的时候,增加部分自动用0填埋

   
   
   
   
   

Objective-C NSData/NSMutableData的更多相关文章

  1. NSData NSDate NSString NSArray NSDictionary 相互转换

    // NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...

  2. NSData和NSString 、 NSFileManager

    1 NSData和NSMutableData的基本使用 1.1 问题 NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,length ...

  3. NSData、NSString 、 NSFileManager

      1 NSData和NSMutableData的基本使用 1.1 问题 NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,leng ...

  4. NSData NSDate NSString NSArray NSDictionary 相互转化

    //    NSData  NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; ...

  5. iOS之数据持久化方案

    概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...

  6. iOS的数据持久化

    所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) pr ...

  7. iOS中plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取 Documents:应用将数据存储在Documents中,但基于NSuserDefaults的首选项设置除外Library:基于NSUserDefaults的 ...

  8. UI:数据持久化

    数据持久化    参考1  参考2  参考3 什么是数据持久化,就是将文件保存在本地的硬盘中,使得应用程序或者机器重启后可以继续访问以前保留的数据.IOS开发中有许多的数据持久化方案. 如下面五种方案 ...

  9. ios十进制、十六进制字符串,byte,data等之间的转换

    十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL  = [NSStringstringWithFormat:@"%@& ...

随机推荐

  1. 解决ssh无操作自动断开[转载,已经验证]

    用SSH远程,如果几分钟没有任何操作,连接就会断开,必须重新登陆才行,非常麻烦,一般修改2个地方3项即可解决问题: 1.终端键入:echo $TMOUT       如果显示空白,表示没有设置,等于使 ...

  2. 使用 Apache Lucene 和 Solr 4 实现下一代搜索和分析

    使用 Apache Lucene 和 Solr 4 实现下一代搜索和分析 使用搜索引擎计数构建快速.高效和可扩展的数据驱动应用程序 Apache Lucene™ 和 Solr™ 是强大的开源搜索技术, ...

  3. uva 11691

    贪心 ~~ 使用优先队列 #include <cstdio> #include <cstdlib> #include <cmath> #include <se ...

  4. HashMap排序的问题

    那么已知一个HashMap<Integer,User>集合, User有name(String)和 age(int)属性.请写一个方法实现对HashMap 的排序功能,该方法接收 Hash ...

  5. 如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.”

    解决方法:加上 <!DOCTYPE xml> <?xml version="1.0" encoding="UTF-8"?> <!D ...

  6. Eclipse的Servers视图中无法添加Tomcat6/Tomcat7

    原文:http://blog.csdn.net/blueheart20/article/details/40043749 问题的提出: 无法从以下方式,添加Tomcat服务器.  其中ServerNa ...

  7. Could not find leader nimbus

    运行storm ui, 然后访问storm ui 的网页的时候,死活跑不起来.后面,根据下面这篇文章的说法, 停止zookeeper 之后,删掉zookeeper 上面的storm 节点, 然后再重启 ...

  8. [转]Wireshark抓包工具--TCP数据包seq ack等解读

    原文: http://blog.csdn.net/wang7dao/article/details/16805337/ ---------------------------------------- ...

  9. 学习Centos 7的笔记

    Step-1 yum install epel-release && yum clean all && yum update –y &&  yum -y ...

  10. 鼠标放上去Div旋转特效代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...