複習iOS沙盒目錄結構解析

每個應用的沙盒目錄都是相似的,主要包含圖中所示的4個目錄:

1、MyApp.app

①存放內容
該目錄包含了應用程序本身的數據,包括資源文件和可執行文件等。程序啓動以後,會根據需要從該目錄中動態加載代碼或資源到內存,這裏用到了lazy loading的思想
②整個目錄是隻讀的
爲了防止被篡改,應用在安裝的時候會將該目錄簽名。非越獄情況下,該目錄中內容是無法更改的;在越獄設備上如果更改了目錄內容,對應的簽名就會被改變,這種情況下蘋果官網描述的後果是應用程序將無法啓動,我沒實踐過。
③是否會被iTunes同步

2、Documents

①存放內容
我們可以將應用程序的數據文件保存在該目錄下。不過這些數據類型僅限於不可再生的數據,可再生的數據文件應該存放在Library/Cache目錄下。
②是否會被iTunes同步

3、Documents/Inbox

①存放內容
該目錄用來保存由外部應用請求當前應用程序打開的文件。
比如我們的應用叫A,向系統註冊了幾種可打開的文件格式,B應用有一個A支持的格式的文件F,並且申請調用A打開F。由於F當前是在B應用的沙盒中,我們知道,沙盒機制是不允許A訪問B沙盒中的文件,因此蘋果的解決方案是講F拷貝一份到A應用的Documents/Inbox目錄下,再讓A打開F。
②是否會被iTunes同步

4、Library

①存放內容
蘋果建議用來存放默認設置或其它狀態信息。
②是否會被iTunes同步
是,但是要除了Caches子目錄外

5、Library/Caches

①存放內容
主要是緩存文件,用戶使用過程中緩存都可以保存在這個目錄中。前面說過,Documents目錄用於保存不可再生的文件,那麼這個目錄就用於保存那些可再生的文件,比如網絡請求的數據。鑑於此,應用程序通常還需要負責刪除這些文件。
②是否會被iTunes同步
否。

6、Library/Preferences

①存放內容
應用程序的偏好設置文件。我們使用NSUserDefaults寫的設置數據都會保存到該目錄下的一個plist文件中,這就是所謂的寫道plist中!
②是否會被iTunes同步

7、tmp

①存放內容
各種臨時文件,保存應用再次啓動時不需要的文件。而且,當應用不再需要這些文件時應該主動將其刪除,因爲該目錄下的東西隨時有可能被系統清理掉,目前已知的一種可能清理的原因是系統磁盤存儲空間不足的時候。
②是否會被iTunes同步
    //根目錄
    NSLog(@"NSHomeDirectory() : %@",NSHomeDirectory());
    
    //App目錄
    NSLog(@"[[NSBundle mainBundle] bundlePath] : %@",[[NSBundle mainBundle] bundlePath]);
    
    //tmp目錄
    NSLog(@"NSTemporaryDirectory() : %@",NSTemporaryDirectory());
    
    //doucument目錄
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *path = [paths objectAtIndex:0];
    NSLog(@"NSDocumentDirectory : %@",path);


原文地址:http://blog.csdn.net/wzzvictory/article/details/18269713

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章