Chapter 10 : 属性列表
PS : Objective-C可使用与C绑定的所有工具,例如标准C库函数。
可使用malloc()和free()函数处理动态内存管理问题,或者使用open(), read(), write(), fopen()和fread函数处理文件。
-> 属性列表类包括NSArray, NSDictionary, NSString, NSNumber, NSDate和NSData。
1. NSDate :用于处理日期和时间的基础类,是一个自动释放对象。示例如下:
1 // 获取当前日期和时间 2 NSDate *date = [NSDate date]; 3 NSLog(@"Today is %@", date); 4 5 // 获取与当前时间相隔一定时差的日期 6 // 间隔时间以秒(s)为单位 7 NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)]; 8 NSLog(@"Yesterday is %@", yesterday);
2. NSData : 用于包装大量字节数据。如下:NSData对象将保存一个普通的C字符串(字节序列),然后输出:
1 const char *string = "Hi there, this is a C String!"; 2 NSData *data = [NSData dataWithBytes:string length:strlen(string)+1]; 3 NSLog(@"data is %@", data);
PS : strlen(string)+1中的"+1"用于包含C字符串所需的尾部的零字节(输出结果末尾的00)。
1 // 可使用%s格式说明输出字符串 2 NSLog(@"%d bytes string is '%s'", [data length], [data bytes]);
NSData对象是不可改变的,它们被创建后就不能改变。NSMutableData支持在数据内容中添加和删除字节。
3. 写入和读取属性列表:
-> 集合属性列表类(NSArray, NSDictionary)具有一个writeToFile:atomically:方法, 用于将属性列表写入文件。
-> NSString和NSData也具有writeToFile:atomically:方法,但是只能写入字符串和数据块。
NSArray *phrase = [NSArray arrayWithObjects:@"I", @"seem", @"to", @"be", @"a", @"verb", nil]; [phrase writeToFile:@"/tmp/verbiage.txt" atomically:YES];
从文件中读取内容:
NSArray *phrase2 = [NSArray arrayWithContentsOfFile:@"/tmp/verbiage.txt"]; NSLog(@"%@", phrase2);
PS : writeToFile:atomically:方法中的atomically参数是用于通知是否应该首先将文件保存在临时文件中,当文件成功保存后,再将临时文件和原始文件
交换,这是一种安机制。