iOS开发-NSData全部API翻译学习

学习NSData,发现网上资料比较零碎,还是苹果官方文档比较全面细致,非常适合集中学习,以下是NSData全部API翻译,欢迎转载学习。

/**************** Immutable Data

不可变的Data

****************/

@interface NSData :

NSObject <NSCopying,

NSMutableCopying, NSSecureCoding>

//6.获取data长度的属性

@property (readonly)

NSUInteger length;

//7.返回data对象的首指针

@property (readonly)

const void *bytes

NS_RETURNS_INNER_POINTER;

@end

@interface NSData (NSExtendedData)

//8.返回一个ASCII编码格式的字符串,采用的格式是data属性列表的格式。

@property (readonly,

copy) NSString *description;

//9.取出data中指定长度的字节存入buffer这个提前声明的数组中

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

//9.取出data中指定位置range的字节存入buffer这个提前声明的数组中

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

//10.判断两个data是否相等

- (BOOL)isEqualToData:(NSData *)other;

//11.截图data指定位置的子data

- (NSData *)subdataWithRange:(NSRange)range;

//12.将data写入指定的文件

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

//13.将data写入指定的url

- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

//14.将data写入指定文件,并且有写入过程的设置条件,带错误信息

- (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)writeOptionsMask

error:(NSError **)errorPtr;

//15.将data写入指定的url,并且有写入过程的设置条件,带错误信息

- (BOOL)writeToURL:(NSURL *)url options:(NSDataWritingOptions)writeOptionsMask

error:(NSError **)errorPtr;

//16.搜索在data1内部存在data2的位置,并且有搜索配置条件,并且可加入搜索的范围

- (NSRange)rangeOfData:(NSData *)dataToFind options:(NSDataSearchOptions)mask

range:(NSRange)searchRange

NS_AVAILABLE(10_6,

4_0);

//17.列举遍历字典的方法

- (void) enumerateByteRangesUsingBlock:(void (^)(const

void *bytes, NSRange byteRange,

BOOL *stop))block

NS_AVAILABLE(10_9,

7_0);

@end

/*** 创建data的所有相关方法作为一个类别几种到一块 ***/

@interface NSData (NSDataCreation)

//18.data的快速创建办法

+ (instancetype)data;

//19.赋值以bytes开头,长度为length的数据,进行初始化使其成为数据对象的内容

+ (instancetype)dataWithBytes:(const

void *)bytes length:(NSUInteger)length;

//20.这个方法生成的data中保存的是指向数据的指针,并没有对数据进行复制操作。

+ (instancetype)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;

//21.这个方法生成的data中保存的是指向数据的指针,并没有对数据进行复制操作。当flag为yes的时候,生成的data对象是bytes的所有者,当data对象被释放的时候也会同时释放bytes,所以bytes必须是通过malloc在堆上分配的内存。当flag为no的时候,bytes不会被自动释放,释放bytes时要注意时机,不要再data对象还被使用的时候释放bytes。

+ (instancetype)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length

freeWhenDone:(BOOL)b;

//22.加载file文件,并且有可选择读取文件的选项配置条件,带有错误信息

+ (instancetype)dataWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask

error:(NSError **)errorPtr;

//23.加载url,并且有可选择读取文件的选项配置条件,带有错误信息

+ (instancetype)dataWithContentsOfURL:(NSURL *)url options:(NSDataReadingOptions)readOptionsMask

error:(NSError **)errorPtr;

//24.从参数path指定的文件读入二进制数据,用该数据初始化NSData对象。

+ (instancetype)dataWithContentsOfFile:(NSString *)path;

//25.从参数path指定的url读入,用该数据初始化NSData对象。

+ (instancetype)dataWithContentsOfURL:(NSURL *)url;

//26.赋值以bytes开头,长度为length的数据,进行初始化使其成为数据对象的内容

- (instancetype)initWithBytes:(const

void *)bytes length:(NSUInteger)length;

//27.这个方法生成的data中保存的是指向数据的指针,并没有对数据进行复制操作。

- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;

//28.这个方法生成的data中保存的是指向数据的指针,并没有对数据进行复制操作。当flag为yes的时候,生成的data对象是bytes的所有者,当data对象被释放的时候也会同时释放bytes,所以bytes必须是通过malloc在堆上分配的内存。当flag为no的时候,bytes不会被自动释放,释放bytes时要注意时机,不要再data对象还被使用的时候释放bytes。

- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length

freeWhenDone:(BOOL)b;

//29.

- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length

deallocator:(void (^)(void *bytes,

NSUInteger length))deallocator

NS_AVAILABLE(10_9,

7_0);

//30.从参数path指定的文件读入二进制数据,用该数据初始化NSData对象。如果读取文件失败,则释放调用者并返回nil,同时把错误信息写入指针errorPtr。mask是一个选项信息,用于指定是否使用虚拟内存等。

- (instancetype)initWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask

error:(NSError **)errorPtr;

//31.从参数url指定的路径中读入,用该数据初始化NSData对象。如果读取文件失败,则释放调用者并返回nil,同时把错误信息写入指针errorPtr。mask是一个选项信息,用于指定是否使用虚拟内存等。

- (instancetype)initWithContentsOfURL:(NSURL *)url options:(NSDataReadingOptions)readOptionsMask

error:(NSError **)errorPtr;

//32.加载flie文件路径

- (instancetype)initWithContentsOfFile:(NSString *)path;

//33.加载url

- (instancetype)initWithContentsOfURL:(NSURL *)url;

//34.用指定的NSData对象aData来创建一个新的NSData对象,参数可以是NSMutableData对象。

- (instancetype)initWithData:(NSData *)data;

//35.用指定的NSData对象aData来创建一个新的NSData对象,参数可以是NSMutableData对象。

+ (instancetype)dataWithData:(NSData *)data;

@end

/*** base64方案编码分类  iOS7之后苹果给出以下四个API供实现base64方案 头两个是处理字符串的,后两个是处理UTF-8编码数据的,这两个承兑的方法功能是一样的,但是有时候用其中一个比另一个效率要高。如果你像要bae64编码字符串然后写进文件,你应该使用UTF-8编码数据的这对方法。如果你打算base64编码字符串之后用作json,你应该使用另外一对方法

编码解码一一对应***/

@interface NSData (NSDataBase64Encoding)

//36.解码。将已经base64编码之后的字符串数据再转化为NSData数据,

- (instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options

NS_AVAILABLE(10_9,

7_0);

//37.编码。将一个data数据利用base64方案转化成base64之后的NSString字符串

- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options

NS_AVAILABLE(10_9,

7_0);

//38.解码。将已经base64编码之后的NSData数据再转化为NSData数据

- (instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions)options

NS_AVAILABLE(10_9,

7_0);

//39.编码.将一个data数据利用base64方案转化成base64之后的NSData数据

- (NSData *)base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options

NS_AVAILABLE(10_9,

7_0);

示例程序:使用第一对编码解码API。

NSString * stringExample = [NSString stringWithFormat:@"I Love You"];

NSData * data1 = [stringExample dataUsingEncoding:NSUTF8StringEncoding];

NSString * base64String   = [data1 base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn];

NSLog(@"Base64-encoded string is %@",base64String);

//log(Base64-encoded string is SSBMb3ZlIFlvdQ==);

NSData * dataFromString = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];

NSLog(@"string is %@",[NSString stringWithUTF8String:[dataFromString bytes]]);

//log(string is I Love You);

@end

/**************** Mutable Data

可变data

****************/

@interface NSMutableData :

NSData

//40.可变data的可变字节

@property (readonly)

void *mutableBytes

NS_RETURNS_INNER_POINTER;

//41.可变data的长度

@propertyNSUInteger length;

@end

@interface NSMutableData (NSExtendedMutableData)

//42.给可变data追加字节

- (void)appendBytes:(const

void *)bytes length:(NSUInteger)length;

//43.给data追加其他的data

- (void)appendData:(NSData *)other;

//44.为已经存在的data追加新的长度

- (void)increaseLengthBy:(NSUInteger)extraLength;

示例程序:

NSMutableData * data = [NSMutableData data];

[data increaseLengthBy:5];

NSLog(@"dataLength———%lu",(unsigned long)data.length);

//45.给data替换对应位置的字节

- (void)replaceBytesInRange:(NSRange)range withBytes:(const

void *)bytes;

//46.重置可变data对应位置的字节

- (void)resetBytesInRange:(NSRange)range;

//47.为可变data设置data数据

- (void)setData:(NSData *)data;

//48.给data替换对应位置的字节, 并且存在替换长度

- (void)replaceBytesInRange:(NSRange)range withBytes:(const

void *)replacementBytes length:(NSUInteger)replacementLength;

@end0

@interface NSMutableData (NSMutableDataCreation)

//49.动态创建可变data

并且初始化指定大小

+ (instancetype)dataWithCapacity:(NSUInteger)aNumItems;

//50.动态创建可变data

并且初始化指定长度

+ (instancetype)dataWithLength:(NSUInteger)length;

//51.静态创建可变data

并且初始化指定大小

- (instancetype)initWithCapacity:(NSUInteger)capacity;

//52.静态创建可变data

并且初始化指定长度

- (instancetype)initWithLength:(NSUInteger)length;

@end

//1.data读取过程的可选配置条件

typedef

NS_OPTIONS(NSUInteger, NSDataReadingOptions) {

NSDataReadingMappedIfSafe =

1UL << 0,

NSDataReadingUncached = 1UL <<

1,

NSDataReadingMappedAlways

NS_ENUM_AVAILABLE(10_7,

5_0) = 1UL <<

3,

NSDataReadingMapped = NSDataReadingMappedIfSafe,

// Deprecated name for NSDataReadingMappedIfSafe

NSMappedRead = NSDataReadingMapped,

// Deprecated name for NSDataReadingMapped

NSUncachedRead = NSDataReadingUncached

// Deprecated name for NSDataReadingUncached

};

//2.data写入过程的可选配置条件

typedef

NS_OPTIONS(NSUInteger, NSDataWritingOptions) {

NSDataWritingAtomic =

1UL << 0,

NSDataWritingWithoutOverwriting

NS_ENUM_AVAILABLE(10_8,

6_0) = 1UL <<

1,

NSDataWritingFileProtectionNone

NS_ENUM_AVAILABLE_IOS(4_0)                                  =

0x10000000,

NSDataWritingFileProtectionComplete

NS_ENUM_AVAILABLE_IOS(4_0)                              =

0x20000000,

NSDataWritingFileProtectionCompleteUnlessOpen

NS_ENUM_AVAILABLE_IOS(5_0)                    =

0x30000000,

NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication

NS_ENUM_AVAILABLE_IOS(5_0)  =

0x40000000,

NSDataWritingFileProtectionMask

NS_ENUM_AVAILABLE_IOS(4_0)                                  =

0xf0000000,

NSAtomicWrite =

NSDataWritingAtomic

};

/**************** Data Search Options

****************/

//3.data在搜索过程中的可选配置条件

typedef

NS_OPTIONS(NSUInteger, NSDataSearchOptions) {

NSDataSearchBackwards =

1UL << 0,

NSDataSearchAnchored =

1UL << 1

} NS_ENUM_AVAILABLE(10_6,

4_0);

/*** 下方为已废弃代码,不多做解释 ***/

@interface NSData (NSDeprecated)

- (void)getBytes:(void *)buffer

NS_DEPRECATED(10_0,

10_10,

2_0, 8_0,

"This method is unsafe because it could potentially cause buffer overruns. Use -getBytes:length: instead.");

+ (id)dataWithContentsOfMappedFile:(NSString *)path

NS_DEPRECATED(10_0,

10_10,

2_0, 8_0,

"Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead.");

- (id)initWithContentsOfMappedFile:(NSString *)path

NS_DEPRECATED(10_0,

10_10,

2_0, 8_0,

"Use -initWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead.");

- (id)initWithBase64Encoding:(NSString *)base64String

NS_DEPRECATED(10_6,

10_9, 4_0,

7_0);

- (NSString *)base64Encoding

NS_DEPRECATED(10_6,

10_9, 4_0,

7_0);

@end

/****************     Purgeable Data

****************/

NS_CLASS_AVAILABLE(10_6,

4_0)

@interface NSPurgeableData :

NSMutableData <NSDiscardableContent> {

@private

NSUInteger _length;

int32_t _accessCount;

uint8_t _private[32];

void *_reserved;

}

@end

时间: 2024-10-07 05:26:03

iOS开发-NSData全部API翻译学习的相关文章

李洪强漫谈iOS开发[C语言-044]-翻译数字

 李洪强漫谈iOS开发[C语言-044]-翻译数字

李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序

前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算机.手机等硬件设备)进行交互.由于我们的最终目的是学习iOS开发,学习iOS开发的话必须在Mac系统下,因此我就在Mac系统环境下开发C语言程序,而不是在Windows环境下. 接下来,就在Mac系统环境下编写第一个C语言程序,最后把程序运行起来,跟计算机做一个小小的互动 一.编写第一个C语言程序-

iOS开发-由浅至深学习block

关于block 在iOS 4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调.这不免让我们想到在C函数中,我们可以定义一个指向函数的指针并且调用: 1 2 3 4 5 bool executeSomeTask(void) {     //do something and return if success or not } bool (*taskPoint)(void); taskPoint = something; 上面的函数指针可以直接

李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂.若遇到不明白的地方或者对此文有异议,望及时评论. 一.什么是iOS 要想学习iOS开发,首先要搞清楚什么是iOS.iOS其实是一款操作系统,就像平时我们在电脑上用的XP.Win7,都是操作系统. 那什么是操作系统呢?操作系统其实是一种软件,是直接运行在硬件(电脑.手机等)上的最基本的系统软件,任何

李洪强iOS开发之【零基础学习iOS开发】【01-前言】02-准备

在上一讲中,介绍了什么是iOS开发.说简单一点,iOS开发,就是开发运行在iPhone或者iPad上的软件.这么一说完,应该有很多人就会产生一些疑惑,比如学习iOS开发是不是一定要买iPhone?需不需要买苹果电脑呢?学软件开发是不是一定要计算机专业的?因此,在这讲中,我会为广大有意学习iOS开发的朋友们进行解惑,说明一下学习iOS开发究竟需要那些准备. 一.程序设计语言 上一讲已经说到:要想开发一款软件,首先得学习一些相应的程序设计语言.至于iOS开发,需要学习的语言主要有:C.C++.Obj

李洪强iOS开发之【零基础学习iOS开发【01-前言】03-前景和难易度分析

一.iOS开发的前景 2012年3月份,苹果公司的市值已经突破5000亿美元,成为世界上市值最大的公司.5000亿是神马概念呢? 可以帮助陷入欧债危机的8个国家偿还债务 可以买下35个天安门广场.34座卢浮宫.109座圆明园 可以同时买下雅虎.戴尔.百思买.摩托罗拉.动视暴雪 超过105个国家一年的GDP 平铺在地上,能覆盖42%的美国领土 每个苹果员工可以分到660万美元 ...... 这个5000亿,真可谓“富可敌国”.在此,我们还要感谢苹果公司给雅安捐款5000万.其实,苹果对我们中国消费

ios开发ios9新特性关键字学习:泛型,逆变,协变,__kindof

一:如何去学习?都去学习什么? 1:学习优秀项目的设计思想,多问几个为什么,为什么要这么设计,这么设计的好处是什么,还能不能在优化 ,如何应用到自己的项目中 2:学习优秀项目的代码风格,代码的封装设计思想,为什么要这么设计,这么设计的好处是什么,还能不能在优化 ,如何应用到自己的项目中,每行代码都要用心去写,每一行代码都要力求使最简洁的 3:学习别人遇到问题是如何分析问题,解决问题的方法是什么 4:遇到新东西应该如何去学习:1:先研究要学习的东西作用是什么 ,有什么好处  2:如何使用:具体的语

iOS开发之多媒体API (转载)

视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类.尽管后者在播放的稳定性和播放画面质量上可能没有前者 优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播.网络演示.远程教育.网络视频广告等等互联网信息服务领域. AD:WOT2015 互联网运维与开发者大会 热销抢票 播放视频 视频文件介绍 视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类.尽管后者在播放的稳定性和播放画面质量上可能没有前者 优秀,但网络流媒

iOS开发之第三方库的学习--hpple的使用

前言:因为在开发中很可能会遇到html解析,如果后台提供的数据只有html数据,或者开发的app需要从web前端的html里获取数据,就需要html解析工具了. 关于HTML解析库,可以阅读:收集几个Objective-C的HTML解析库 了解.下面是我在学习开源项目Coding遇到用到了hpple解析工具,所以就拿出来学习然后总结总结一下了. 新建一个普通的工程,然后我使用了pod集成这个hpple库来使用: 然后我累解析解析index.html文件: 主要的代码: 1 - (void)tou