iOS之沙盒路徑

前言

今天去面試了, 面試官遞給了我一個筆記本電腦."來, 試著把這個賣給我"于是我就把本本夾在腋下, 跑出大廈, 騎著我的電動車回家去了.最后, 他還是給我來電話了,"馬上把電腦送回來!","給我2000塊, 它就是你的了".

沙盒路徑.jpeg

介紹

  • 每一個APP都有一個存儲空間,就是沙盒吆寨。APP之間不能相互通信啄清。沙盒根目錄結構:Documents、Library掷贾、temp想帅。

  • iOS的沙盒下面主要包含該以下三個文件:

    Home.png

    路徑是這樣的:

 // 獲取沙盒主目錄路徑
NSString *homeDir = NSHomeDirectory();
 // 模擬器下的路徑
/Users/apple/Library/Developer/CoreSimulator/Devices/12E868D1-2332-4215-B25E-3D5C8E3D1B07/data/Containers/Data/Application/3AE2AB9E-053B-41BF-B3D0-688F96A0D2F1
 // 真機下的路徑
/var/mobile/Containers/Data/Application/8194D1EB-4026-49F6-ADAD-458355533828
 // 應用的標識再往下就是沙盒了.系統(tǒng)生成.
(3AE2AB9E-053B-41BF-B3D0-688F96A0D2F1),
(8194D1EB-4026-49F6-ADAD-458355533828)

*注:每次編譯代碼會生成新的沙盒, 注意是編譯不是啟動,所以模擬器或者真機運行你每次運行所得到的沙盒路徑都是不一樣,就是上面提到的標識符不一樣,正式版app真機的話啟動殺死,不會生成新的沙盒.

一博脑、Documents
// 獲取Documents目錄路徑
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  • A 此文件夾是默認備份的,備份到iCloud
注:iCloud的備份叉趣,會通過Wi-Fi每天自動備份用戶iOS設備疗杉。
1.app的home目錄下的所有東西都會被備份蚕礼,除了應用Bundle本身、緩存目錄和temp目錄朝聋。
2.已購買的音樂冀痕、應用、書籍言蛇、Camera Roll、設備設置吨拗、主屏幕劝篷、App組織民宿、消息、鈴聲也都會被備份。
3.由于備份通過無線進行华望,并且為每個用戶存儲在iCloud中赖舟,應用需最小化自己存儲的數(shù)據(jù)數(shù)量夸楣。
4.大文件會延長備份時間,并且消耗用戶的可用iCloud空間石洗。
  • B大文件要做 非備份設置(如視頻) 審核的時候會被拒:
// 非備份設置代碼如下
// 需要導入
#include <sys/xattr.h>
- (BOOL)addShipBackUpAttributeToUrl:(NSString *)url {
    NSURL *itemUrl = [NSURL URLWithString:url];
    const char *filePath = [[itemUrl path] fileSystemRepresentation];
    const char* attrName = "com.apple.MobileBackup";
    u_int8_t attrValue = 1;
    
    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
    return result == 0;
}
  • C此目錄儲存規(guī)則
關鍵數(shù)據(jù)
用戶創(chuàng)建的數(shù)據(jù)讲衫,或者不能重新生成的數(shù)據(jù)涉兽。
應該存放在<Application_Home>/Documents目錄下篙程,并且不應該標記為"do not backup"屬性虱饿。
關鍵數(shù)據(jù)在低存儲空間時也會保留触趴,而且會被iCloud或iTunes備份雕蔽。
  • D經(jīng)常存儲的一些東西
1.APP的數(shù)據(jù)庫表.
2.必要的一些圖標本地緩存.
3.重要的plist文件,如當前登錄人的信息.
二批狐、Library
  • 里面包括兩個文件夾


    Library.png
// 獲取Library的目錄路徑
NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
  • A嚣艇、Caches

儲存規(guī)則

// 獲取Caches目錄路徑
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
緩存數(shù)據(jù)
可以重新下載或生成的數(shù)據(jù)食零,而且沒有這些數(shù)據(jù)也不會妨礙用戶離線使用應用的功能贰谣。
緩存數(shù)據(jù)應該保存在<Application_Home>/Library/Caches目錄下吱抚。
緩存數(shù)據(jù)在設備低存儲空間時可能會被刪除,iTunes或iCloud不會對其進行備份秘豹。

系統(tǒng)的緩存都放在這個文件夾下面(主要是網(wǎng)路).
當訪問網(wǎng)絡時系統(tǒng)自動會把訪問的url,以數(shù)據(jù)庫的方式存放在此目錄下面.

Caches.png

其中一個數(shù)據(jù)庫的內容:


url.png

Snapshots默認文件夾

// 系統(tǒng)截圖文件夾, 我們沒有權限訪問
Snapshots .png
  • B、Preferences(默認備份的)

NSUserDefaults就是默認存放在此文件夾下面,如下代碼

// 獲取Preferences目錄路徑
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
 NSString *preferences = [[paths firstObject] stringByAppendingString:@"/Preferences"];

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 [defaults setObject:@"有毒的程序猿" forKey:@"firstName"];
 [defaults setInteger:100 forKey:@"age"];   
 [defaults synchronize];
// 這里NSUserDefaults 是以key - value的形式存儲為.plist文件.
// 在這不得不多說一下[defaults synchronize]的作用.
// 其實可以不調用,文件也可以正常存儲,不過就是異步的.
// [defaults synchronize] 起到了立刻儲存的作用.
Preferences.png
三、tmp
  • 臨時文件夾(系統(tǒng)會不定期刪除里面的文件)
// 獲取tmp目錄路徑
NSString *tmpDir = NSTemporaryDirectory();   
應用需要寫到本地存儲怎炊,內部使用的臨時數(shù)據(jù)廓译,但不需要長期保留使用。
臨時數(shù)據(jù)應該保存在<Application_Home>/tmp目錄非区。
系統(tǒng)可能會清空該目錄下的數(shù)據(jù)征绸,iTunes或iCloud也不會對其進行備份俄占。
應用在不需要使用這些數(shù)據(jù)時缸榄,應該盡快地刪除臨時數(shù)據(jù)甚带,以避免浪費用戶的存儲空間佳头。
四、SystemData
  • 新加入的一個文件夾, 存放系統(tǒng)的一些東西,暫時沒研究其用法,有興趣的同學可以研究其儲存規(guī)則.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市亭珍,隨后出現(xiàn)的幾起案子肄梨,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纱控,死亡現(xiàn)場離奇詭異甜害,居然都是意外死亡尔店,警方通過查閱死者的電腦和手機主慰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門该肴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藐不,“玉大人,你說我怎么就攤上這事涎嚼。” “怎么了苔货?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刁憋。 經(jīng)常有香客問我,道長至耻,這世上最難降的妖魔是什么尘颓? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任疤苹,我火速辦了婚禮卧土,結果婚禮上尤莺,老公的妹妹穿的比我還像新娘颤霎。我一直安慰自己,他們只是感情好晴音,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著壮吩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪觉啊。 梳的紋絲不亂的頭發(fā)上杠人,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天嗡善,我揣著相機與錄音辑莫,去河邊找鬼。 笑死罩引,一個胖子當著我的面吹牛各吨,可吹牛的內容都是我干的。 我是一名探鬼主播袁铐,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼揭蜒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剔桨?” 一聲冷哼從身側響起屉更,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洒缀,沒想到半個月后瑰谜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年砰奕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胸哥。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘲更,死狀恐怖篓冲,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤惊畏,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布缰盏,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏须尚。R本人自食惡果不足惜楔脯,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镜廉。 院中可真熱鬧,春花似錦塔插、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽紊册。三九已至润努,卻和暖如春垛膝,著一層夾襖步出監(jiān)牢的瞬間线衫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工屋确, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纱昧,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓粘招,卻偏偏與公主長得像袍冷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骇陈,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容