创建于完成: 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. poj3648,2-sat求解

    关键是题意的理解,英语,有时候明明每个字都认识,但是还是理解错误!哎!!悲剧啊!题意啊! 这是关键!开始误理解为n对新娘郞,非也!是只有一对,其他是夫妇,理解后就好做了,建立图 是关键,怎么转化关系, ...

  2. P1359 租用游艇 洛谷

    https://www.luogu.org/problem/show?pid=1359 题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n.游客可在这些游艇出租站租用游艇,并在下游的 ...

  3. zookeeper原理浅析(一)

    参考:https://www.cnblogs.com/leocook/p/zk_0.html 代码:https://github.com/littlecarzz/zookeeper 1. 什么是Zoo ...

  4. java 基础 1 final关键字

    1. final关键字 数据:声明数据为常量,对于基本类型final使数值不变,对于引用类型final使引用不变,但引用所指向的值是可以改变的,例如       final StringBuffer ...

  5. 页面跳转到顶部---bug修改

    今天遇到一个很诡异的bug 某元素的html结构是: <div id="aa"> <span>诡异的bug</span> </div> ...

  6. google官方建议使用的网站性能测试工具

    转自:http://www.laokboke.net/2013/05/12/google-official-recommended-site-performance-testing-tools/ 最近 ...

  7. oracle授权、表备份、用户管理

    用户管理 创建用户: create user 用户名 identified by 密码; 修改用户密码: alter user 用户名 identified by 密码; 激活用户: alter us ...

  8. 10 逻辑完善以及bug修复

    进行到这里,我们应用开发已经接近尾声,我这里基本就是应用开发的记录过程,讲解的东西很少,有问题可以在评论区讨论呦.下面进入最后调整的阶段. 预览我们的应用,会发现首页的职位列表,也会显示收藏的星星图标 ...

  9. MySQL的引入,绿色包下载和应用

    一.下载MySQL绿色版 1.下载地址: 以下是MySQL最新绿色版链接(都是来源于oracle官网),点击以下链接直接下载. 1.1.官网链接:https://www.oracle.com/inde ...

  10. [办公应用]从美国带回来的兄弟牌brother打印机如何处理

    周末帮朋友去调一台国外带回来的brother一体机,型号MFC-J630W.这是她单位老板从国外带回来的,说是便宜:不过她说只有英文说明书,她不太会操作.我想这还不容易么,就满口答应下来了.我先到br ...