iOS-應用程序沙盒機制(SandBox)

iOS應用程序沙盒

iOS程序的沙盒機制SandBox,是一種安全機制,它規定了應用程序只能在爲該應用建立的文件夾內讀取文件,不能夠訪問其餘地方的內容。 全部的非代碼文件都保存在這個地方,好比圖片、聲音、屬性列表和文本文件等。html

(1) 每一個應用程序都在本身的沙盒內,都有獨立的文件系統
(2) 不能隨意跨越本身的沙盒去訪問別的應用程序沙盒中的內容
(3) 應用程序向外請求或接收數據都須要通過權限認證swift

應用程序的目錄

默認狀況下,每一個沙盒有三個文件夾,Documents、Library、tmp緩存

Documents,蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下,iTunes備份和恢復的時候會包括此目錄;
Library,存儲程序的默認設置或其它狀態信息;
Library/Caches:存放緩存文件。iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除;
Library/Preferences: 存儲程序的默認設置。基於NSUserDefaults的首選項設置便存儲在這個裏。
tmp,建立和存放臨時文件的地方,iTunes備份和恢復的時候不會包括此目錄。安全

代碼示例:app

//
//  ViewController.swift
//  
import UIKit

class RootViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        // 1 Home 目錄,即沙河目錄 ~/
        let path1 = NSHomeDirectory();
        print("path1 = \(path1)")

        // 2 Documents 目錄  ~/Documents
        let path2 = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, false).first!
        print("path2 = \(path2)")

        // 3 Library 目錄  ~/Library
        let path3 = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true).first!
        print("path3 = \(path3)")

        // 4 Caches 目錄 ~/Library/Caches
        let path4 = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true).first!
        print("path4 = \(path4)")

        // 5 tmp 目錄 ~/tmp/
        let path5 = NSTemporaryDirectory()
        print("path5 = \(path5)")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

參考

https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW2ide

http://blog.csdn.net/wzzvictory/article/details/18269713ui

相關文章
相關標籤/搜索