App的構(gòu)成
每一個(gè)App都被放在沙盒(sandbox)中津滞,在沙盒中肾筐,有一個(gè)Containers
,Containers
又被分為Bundle Container
和Data Container
。
SandBox
- Containers
- Bundle Container
- Data Container
屏幕快照 2017-11-28 下午10.58.00.png
Containers下的目錄:
屏幕快照 2017-11-28 下午10.58.07.png
Bundle下的目錄:
屏幕快照 2017-11-28 下午10.58.33.png
Data 下的目錄:
屏幕快照 2017-11-28 下午10.58.55.png
Bundle Container
所謂的Bundle Container
就是我們所創(chuàng)建的工程瑞眼,以.app結(jié)尾,就是一個(gè)可執(zhí)行文件(如下圖所示)棵逊。我們寫代碼時(shí)導(dǎo)入的圖片伤疙,音頻文件也都在這個(gè)目錄下。
屏幕快照 2017-11-28 下午11.05.38.png
用代碼訪問該路徑的方法:
NSString *bundleContainerPath = [[NSBundle mainBundle] bundlePath];
NSLog(@"bundle container path:%@", bundleContainerPath);
屏幕快照 2017-11-28 下午11.15.28.png
Data Container
而Data Container
就是App存放數(shù)據(jù)的目錄辆影。該目錄下又分為
- Document //用戶生成的數(shù)據(jù)(聊天記錄徒像,下載的文件等),將應(yīng)用程序的數(shù)據(jù)文件保存在該目錄下蛙讥。不過這些數(shù)據(jù)類型僅限于不可再生的數(shù)據(jù)厨姚,會(huì)被iTunes同步。
- Library //蘋果建議用來存放默認(rèn)設(shè)置或其它狀態(tài)信息键菱。
----Library/Cache // 主要是緩存文件谬墙,保存那些可再生的文件,比如網(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)经备。鑒于此拭抬,應(yīng)用程序通常還需要負(fù)責(zé)刪除這些文件。不會(huì)被iTunes同步侵蒙。
----Library/Preferences //應(yīng)用程序的偏好設(shè)置文件造虎。我們使用NSUserDefaults寫的設(shè)置數(shù)據(jù)都會(huì)保存到該目錄下的一個(gè)plist文件中。會(huì)被iTunes同步 - Temp //各種臨時(shí)文件纷闺,保存應(yīng)用再次啟動(dòng)時(shí)不需要的文件算凿。該目錄下的東西隨時(shí)有可能被系統(tǒng)清理掉。不會(huì)被iTunes同步犁功。
用代碼訪問該路徑的方法:
NSString *dataContainerPath = NSHomeDirectory();
NSLog(@"data container path:%@", dataContainerPath);
屏幕快照 2017-11-28 下午11.15.42.png
訪問Document
目錄:
// ios下只有一個(gè)document目錄氓轰,所以firstObject即可
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"document path:%@", documentPath);
;
NSLog(@"Temp path:%@", tempPath);
屏幕快照 2017-11-28 下午11.25.27.png