OC--應(yīng)用程序沙盒的基本概念

1、iOS中的沙盒(sandbox)機制

1)iOS應(yīng)用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個"獨立","封閉","安全"的空間,稱之為沙盒,所有的非代碼文件都要保存在此。

2)它一般存放著你程序包文件(可執(zhí)行文件)、圖片、聲音、視頻、plist、sqlite數(shù)據(jù)庫以及其他文件

2)每個應(yīng)用程序都有自己的獨立的存儲空間(沙盒),一般情況下應(yīng)用程序是不可以相互訪問沙盒,也有例外,比如系統(tǒng)通訊錄能在用戶授權(quán)的情況下被第三方應(yīng)用訪問

2、沙盒目錄文件的組成以及相關(guān)含義

當(dāng)我們創(chuàng)建我們的應(yīng)用程序時,在每個沙盒中默認(rèn)含有四個文件,如下:

Documnets:

一般我們需要持久的數(shù)據(jù)都放在這個目錄中,你可以在當(dāng)中添加子文件夾,需要注意的是,iTunes備份和恢復(fù)的時候,會包括此目錄

Library:

設(shè)置程序的默認(rèn)設(shè)置和其他狀態(tài)信息

Library/Caches:存放緩存文件,應(yīng)用程序再次啟動過程中需要的信息

Library/Preferences:包含應(yīng)用程序的偏好設(shè)置文件。

tmp:

創(chuàng)建臨時文件的目錄,當(dāng)我們的iOS設(shè)備重啟是,文件會自動被清除

程序.app,與另三個路徑的父路徑不同

這是應(yīng)用程序的程序包目錄,包含應(yīng)用程序的本身。由于應(yīng)用程序必須經(jīng)過簽名,所以您在運行時不能對這個目錄中的內(nèi)容進(jìn)行修改,否則可能會使應(yīng)用程序無法啟動

二、獲取沙盒目錄

1、獲取到沙盒的根目錄

NSString *homePath = NSHomeDirectory();

2、獲取Documents目錄

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,

NSUserDomainMask, YES);

NSString *docPath = [paths lastObject];

3、獲取Library中的Cache

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);

NSString *docPath = [paths lastObject];

4、獲取tmp路徑

NSString *temp = NSTemporaryDirectory();

5、獲取程序包文件路徑

[[NSBundle mainBundle] resourcePath

三、NSString類路徑處理方法

有些時候我們需要對獲取到的文件目錄做一些特殊處理,常用的方法有以下幾個:

比如針對:

NSString *path = @"/Users/apple/testfile.text";

//獲得組成此路徑的各個組成部分,結(jié)果:(“/”,” Users”, “apple”, ”testfile.text”)

- (NSArray *)pathComponents;

// 提取路徑的最后一個組成部分,結(jié)果:testfile.text

- (NSString *)lastPathComponent;

// 刪除路徑的最后一個組成部分,結(jié)果:/Users/apple

- (NSString *)stringByDeletingLastPathComponent;

// 將path添加到現(xiàn)有路徑的末尾,結(jié)果:/Users/apple/testfile.text/app.text

- (NSString *)stringByAppendingPathComponent:(NSString *)str;

// 取路徑最后部分的擴展名,結(jié)果:text

- (NSString *)pathExtension;

// 刪除路徑最后部分的擴展名,結(jié)果:/Users/apple/testfile

- (NSString *)stringByDeletingPathExtension;

// 路徑最后部分追加擴展名,結(jié)果:/Users/apple/testfile.text.jpg

- (NSString *)stringByAppendingPathExtension:(NSString *)str;

四、NSData的基本概念

NSData是用來包裝數(shù)據(jù)用的

NSData存儲的是二進(jìn)制數(shù)據(jù),這樣就屏蔽了數(shù)據(jù)之間的差異,文本、音頻、圖像等數(shù)據(jù)都可以用NSData來存儲

NSMutableData繼承NSData類,可以對該對象進(jìn)行數(shù)據(jù)修改

//string ---> data

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

//data ---> string

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

五、練習(xí)

示例

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、 沙盒概念基本介紹 iOS 應(yīng)用程序只能在該 app 的文件系統(tǒng)中讀取。這個默認(rèn)的 app 文件系統(tǒng)就是我們說...
    Laughingg閱讀 2,939評論 2 10
  • 下面是我最近兩年學(xué)習(xí)OC中的一些基礎(chǔ)知識,對于學(xué)習(xí)OC基礎(chǔ)知識的人可能有些幫助,拿出來分享一下,還是那句話不喜勿噴...
    小小趙紙農(nóng)閱讀 2,823評論 1 7
  • 一、iOS中的沙盒機制 iOS應(yīng)用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。它一...
    tzhtodd閱讀 1,348評論 0 2
  • iOS開發(fā)-文件管理(一) 一、iOS中的沙盒機制 iOS應(yīng)用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立、封閉...
    MacShare閱讀 1,863評論 0 6
  • 當(dāng)我三十歲的時候, 我希望那時的我已經(jīng)結(jié)婚, 有一個我愛的也愛我的老公。 每天早起,他做簡單的早餐; 每天晚上,我...
    風(fēng)之念閱讀 916評論 0 0

友情鏈接更多精彩內(nèi)容