zoukankan      html  css  js  c++  java
  • 归档与解档的注意点

    1.归档时的路径不能越级存放,原因是归档时不会将路径过程中没有的文件夹创建出来。
    正确的写法:
    // 存储上传文件信息的路径(caches)
    #define UploadCachesDirectory [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]stringByAppendingPathComponent:@"UploadCache.data”]
    
    [NSKeyedArchiver archiveRootObject:documentUploadFileModel toFile:UploadCachesDirectory];

    错误的写法:
    // 缓存主目录
    #define ZFCachesDirectory [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory
    NSUserDomainMask, YES) firstObject]stringByAppendingPathComponent:@"ZFCache”]
    
    #define UploadCaches [ZFCachesDirectory stringByAppendingPathComponent:@"uploadCaches.data”]
    
    [NSKeyedArchiver archiveRootObject:documentUploadFileModel toFile:UploadCaches];

    2.对同一个数据,多处进行解档和归档操作,处理不当很容易造成,类似于多线程访问同一数据而引起的混乱。

    解决方案:
    前提-左边为长循环,右边为突发事件。
    关键-其实,如果右边的归档发生在左边的归档之后,就不会发生混乱。因此,要解决的就是,突发事件的归档已经完成,当时左边归档的对象竟然还是之前解档时获得的最初值。
    策略-在左边进行归档操作前,将右边突发事件的修改值,放在左边的归档前。比如,假如下面代码:
    //归档前,需要
    DocumentUploadFileModel *tempUploadFileModel = [NSKeyedUnarchiver unarchiveObjectWithFile:UploadCachesDirectory];
    documentUploadFileModel.uploadPause = tempUploadFileModel.uploadPause;
  • 相关阅读:
    Linux常用的命令
    Docker编写镜像 发布个人网站
    Linux安装docker笔记
    单例模式
    Cache一致性协议之MESI
    linux环境搭建单机kafka
    【Ray Tracing The Next Week 超详解】 光线追踪2-4 Perlin noise
    【Ray Tracing The Next Week 超详解】 光线追踪2-3
    【Ray Tracing The Next Week 超详解】 光线追踪2-2
    【Ray Tracing The Next Week 超详解】 光线追踪2-1
  • 原文地址:https://www.cnblogs.com/cchHers/p/8711904.html
Copyright © 2011-2022 走看看