创建于完成: 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. SUSE linux使用zypper 安装软件-比yum更好用

    1. How to install "wget" command in Linux and how to use multiple : https://www.cyberciti. ...

  2. msp430入门编程35

    msp430中C语言的可移植--规划软件层次

  3. transient 关键字

    java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.换句话来说就是,用transient关键字标记的成员变量不参与序列化过程.   作用 Jav ...

  4. Java实验--继承与多态

    ---恢复内容开始--- 题目如下: [实验任务一]:面积计算(设计型). 1. 实验要求: 实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 2.实验内容: ( ...

  5. 多平台密码绕过及提权工具Kon-Boot的使用与防范

    在单用户的机器上密码可能没那么重要,但是一旦有多个用户可以使用这台机器,密码就显得十分必要了(比如有儿童账户的电脑).所以说为你的电脑增设一条防线的最常用,最简单的方法就是用密码将你的电脑保护起来,但 ...

  6. POJ 1679 The Unique MST 推断最小生成树是否唯一

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22715   Accepted: 8055 D ...

  7. fixedBox固定div漂浮代码 支持ie6以上大部分浏览器

    fixedBox固定div漂浮代码 支持ie6以上大部分浏览器 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  8. Linux——系统调用笔记1

    底层文件访问:    进程:运行中的程序,它有一些与值关联的文件描述符,有多少个文件描述符取决于系统配置情况.    当一个程序开始运行时,一般会打开三个文件描述符:        0:标准输入    ...

  9. Maven实战(七,八)——经常使用Maven插件介绍

    我们都知道Maven本质上是一个插件框架,它的核心并不运行不论什么详细的构建任务,全部这些任务都交给插件来完毕,比如编译源代码是由maven-compiler-plugin完毕的.进一步说,每一个任务 ...

  10. android WIFI信息获取

    在androi中WIFI信息的获取能够通过系统提供的WIFI Service获取 [java]  WifiManager wifi_service = (WifiManager)getSystemSe ...