本地sandbox缓存目录
 
 
沙盒の 主目录:
po NSHomeDirectory()
 

/Users/SpongeBob/Library/Developer/CoreSimulator/Devices/5A46B8A4-F547-4B6A-B5B8-F76A6E13998F/data/Containers/Data/Application/02DF6B84-32DF-4082-A7AE-EF4D9A110E42

 
沙盒の bundle(*.app包) 路径:
po [[NSBundle mainBundle] bundlePath]

/Users/SpongeBob/Library/Developer/CoreSimulator/Devices/5A46B8A4-F547-4B6A-B5B8-F76A6E13998F/data/Containers/Bundle/Application/927AB12D-9922-4B00-AAB5-2228FD4025A3/01-BundlePath&HomeDirectory.app

 
沙盒の Tmp 路径
po NSTemporaryDirectory()
 

/Users/SpongeBob/Library/Developer/CoreSimulator/Devices/5A46B8A4-F547-4B6A-B5B8-F76A6E13998F/data/Containers/Data/Application/02DF6B84-32DF-4082-A7AE-EF4D9A110E42/tmp/

 
沙盒の document 路径

NSLog(@"%@", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]);

/Users/SpongeBob/Library/Developer/CoreSimulator/Devices/5A46B8A4-F547-4B6A-B5B8-F76A6E13998F/data/Containers/Data/Application/21231E28-ED5C-4D6E-AE03-A981DDD33CCC/Documents

 
 
注释:
5A46B8A4-F547-4B6A-B5B8-F76A6E13998F (模拟器)设备的UUID --不可改变
02DF6B84-32DF-4082-A7AE-EF4D9A110E42 (应用程序)*.app 的UUID --随机生成
 
Objc:
 
 
 
 
 Swift:
 
0、变量的声明 & Swift中延迟的加载
    @IBOutlet weak var imgView: UIImageView!

    var str = "https://www.baidu.com/img/bdlogo.png"

    // 在Swift中,只需要一行搞定“懒加载”
    // 参考: http://swiftist.org/topics/129
    lazy var imgCache = NSMutableDictionary()

//    lazy var cache : NSMutableDictionary = {
//        let dic = NSMutableDictionary()
//
//        return dic
//    }()

    // MARK: lazy load array   ???
//    lazy var name: String = "Spongebob"
//    var arr: NSArray {
//        get {
//            return NSArray()
//        }
//    }
1、网络下载图片,缓存到本地沙盒
    /// 将网络图片缓存到本地沙盒
    func downloadPicToCache() {

        println("网络下载图片")

        var urlPic = NSURL(string: str)

        var data = NSData(contentsOfURL: urlPic!)

        var image = UIImage(data: data!)
        self.imgView.image = image

        // 写入沙盒
        if data != nil {
            println((str as NSString).appendCacheDir())

            data?.writeToFile((str as NSString).appendCacheDir(), atomically: true);
        }
    }

2、加载图片

    /// 加载网络图片
    func loadImg() {
        var img = UIImage(contentsOfFile: (str as NSString).appendCacheDir())

        if self.imgCache[str] != nil {

            println("从内存中加载图片")

            self.imgView.image = self.imgCache[str] as? UIImage
        } else {

            if img != nil {
                println("从沙盒(磁盘)加载图片")

                println((str as NSString).appendCacheDir())

                // 将图片添加到图片缓冲池中
                self.imgCache.setObject(img!, forKey: str)

                self.imgView.image = img
            } else {
                downloadPicToCache()
            }

        }
    }

3、这里为NSString写了一个分类(为了拼接沙盒路径地址)

/*
///  拼接文档目录
- (NSString *)appendDocumentDir;

///  拼接缓存目录
- (NSString *)appendCacheDir;

///  拼接临时目录
- (NSString *)appendTmpDir;
*/

- (NSString *)appendDocumentDir {

    NSString *dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    // stringByAppendingPathComponent拼接时,会自动加上反斜杠"/"
    // self为字符串本身,lastPathComponent获取文件路径最后的字符串!
    return [dir stringByAppendingPathComponent:self.lastPathComponent];
}

- (NSString *)appendCacheDir {
    NSString *dir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

    return [dir stringByAppendingPathComponent:self.lastPathComponent];
}

- (NSString *)appendTmpDir {
    return [NSTemporaryDirectory() stringByAppendingPathComponent:self.lastPathComponent];
}

源码分享:https://github.com/SpongeBob-GitHub/Sandbox_Caches

Swift懒加载,参考:http://swiftist.org/topics/129

最新文章

  1. 协程--gevent模块(单线程高并发)
  2. win10使用技巧之如何打出偏僻字母
  3. python数字图像处理(18):高级形态学处理
  4. Python偏函数
  5. MC3190终端配置冷启动自动恢复的方法
  6. GoldenGate 配置extract,replicat进程自启动
  7. treap 1296 营业额统计
  8. Sobel算子 (转)
  9. 【性能诊断】十一、性能问题综合分析(案例2,windbg、wireshark)
  10. 连接池 BoneCPDataSource
  11. oGitHub 注册
  12. Linux内核定时器
  13. C++数据结构之图
  14. java调用C#的dll
  15. cocos2d-x 欢乐捕鱼游戏总结
  16. [ISSUE] [Centos] Centos Start Nginx Show: Failed to start nginx.service:unit not found
  17. CodeForces - 95B(DFS)
  18. vue与jquery合作
  19. 命令配置linux分辨率
  20. bzoj1606

热门文章

  1. Spark里面:获取图Spark有多少行代码
  2. C++ primer札记10-继承
  3. Android Studio如何引用jar包裹(不gradle)
  4. Android SharedPreferences复杂的存储
  5. [原创].NET 分布式架构开发实战之三 数据访问深入一点的思考
  6. android:ViewPager动画摘要
  7. java线程中的sleep和wait区别
  8. 股票作手回忆录Digest(转)
  9. 一步一步学习ASP.NET 5 (三)- 认识新的Web结构
  10. NOI第一天感想&小结