利用GCD进行数据持久化的方式(二)
2016-01-15 11:04
190 查看
如果各位看官看过我上一篇利用GCD持久化方式(一)那我在这里对一些相同的参数就不在做过多的介绍了,还请各位见谅.
还是按照惯例,先搞一个路径用来存储数据
这里我们创建一条普通的异步线程就可以
然后创建dispatch_data_t
接下来我们需要搞一个信号量来监测是否完成任务
好啦,开始写入文件
然后等待完成后关闭文件描述
以上是写入文件的操作,回调函数里面的error需要注意下,如果一切正常,写入成功的话error == 0 其他情况都是写入失败
读取操作和写入操作一样,我就直接上代码了
好啦!我目前就研究了这两种的GCD数据持久化方式,由于能力有限,目前还没有深入剖析这两种方式的具体区别,还请大神们 不吝赐教
还是按照惯例,先搞一个路径用来存储数据
NSString *path = [NSString stringWithFormat:@"%@/Documents/myData.text",NSHomeDirectory()]; NSLog(@" %@",path);
这里我们创建一条普通的异步线程就可以
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
然后创建dispatch_data_t
int intbuffer[] = { 1, 2, 3, 4 }; dispatch_data_t data = dispatch_data_create(intbuffer, sizeof(intbuffer), queue, NULL);
接下来我们需要搞一个信号量来监测是否完成任务
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
好啦,开始写入文件
dispatch_semaphore_t sem = dispatch_semaphore_create(0); dispatch_fd_t fd = open(strcpy(myChar, (char *)[path UTF8String]), O_RDWR | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG | S_IRWXO); dispatch_write(fd, data, queue, ^(dispatch_data_t data, int error) { NSLog(@"已经写入 %zu 字节!", dispatch_data_get_size(data) - (data ? dispatch_data_get_size(data) : 0)); dispatch_semaphore_signal(sem); });
然后等待完成后关闭文件描述
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); close(fd);
以上是写入文件的操作,回调函数里面的error需要注意下,如果一切正常,写入成功的话error == 0 其他情况都是写入失败
读取操作和写入操作一样,我就直接上代码了
fd = open(strcpy(myChar, (char *)[path UTF8String]), O_RDWR);
dispatch_read(fd, 4 * sizeof(int), queue, ^(dispatch_data_t data, int error) {
dispatch_semaphore_signal(sem);
});
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); close(fd);
getchar();
好啦!我目前就研究了这两种的GCD数据持久化方式,由于能力有限,目前还没有深入剖析这两种方式的具体区别,还请大神们 不吝赐教
相关文章推荐
- 第三方程序调用django的models遇到的问题
- Python包管理工具setuptools详解(进阶)
- 欢迎使用CSDN-markdown编辑器
- ios捕获异常并发送图片,便于解决bug
- 存储过程中引用的常规表,临时表以及表变量是否会导致存储过程的重编译
- Hadoop大数据平台构建
- 让气球飞吧(林大oj196)
- php文字替换表情
- JavaWeb_02_XML Schema约束
- Maven+Jenkins+SVN 持续集成测试
- 订阅经济时代,传媒出版行业如何邮件营销?
- windows 命令行删除整目录
- Oracle 11g客户端中文乱码问题
- android shape的使用
- Spark Streaming 的玫瑰与刺
- [DGMGRL]ORA错误解决(ORA-16829: fast-start failover configuration is lagging)
- CodeForces 368A Sereja and Coat Rack
- vim乱码的解决
- Android开发--CardView使用
- (漫画)高效程序