您好,登錄后才能下訂單哦!
郝萌主傾心貢獻(xiàn),尊重作者的勞動(dòng)成果,請(qǐng)勿轉(zhuǎn)載。
如果文章對(duì)您有所幫助,歡迎給作者捐贈(zèng),支持郝萌主,捐贈(zèng)數(shù)額隨意,重在心意^_^
我要捐贈(zèng): 點(diǎn)擊捐贈(zèng)
Cocos2d-X×××:點(diǎn)我傳送
語(yǔ)言的設(shè)計(jì)主要是被應(yīng)用于實(shí)踐,
而Objective-C應(yīng)用最廣的地方就是Mac OS X或iOS的Foundation框架。
Foundation框架允許你利用文件系統(tǒng)對(duì)文件或目錄執(zhí)行基本操作,這些基本操作是由NSFileManager類(lèi)提供的。
使用NSFileHandle類(lèi)提供的方法,可以打開(kāi)文件并對(duì)文件執(zhí)行多次讀/寫(xiě)操作。
NSFileHandle類(lèi)的方法可以實(shí)現(xiàn)如下功能:
1)打開(kāi)一個(gè)文件,執(zhí)行讀、寫(xiě)或更新(讀取和寫(xiě)入)操作。
2)在文件中查找指定位置。
3)從文件中讀取特定數(shù)目的字節(jié),或?qū)⒅付〝?shù)目的字節(jié)寫(xiě)入文件。
NSFileHandle類(lèi)提供的方法也可用于各種設(shè)備或套接字。
很多語(yǔ)言中使用的框架也有類(lèi)似的FileHandle。
NSURL類(lèi)允許在應(yīng)用中使用URL方法。這個(gè)和Java中的URL差不多。
NSBundle類(lèi)提供了允許在應(yīng)用中使用包(bundle)的方法,包括搜索包中的特定資源。
這個(gè)東西更類(lèi)似于Android應(yīng)用中的Resource或R之類(lèi)干的活。
管理文件和目錄使用NSFileManager,文件或目錄使用文件的路徑名為唯一標(biāo)識(shí)。
完整路徑也稱為絕對(duì)路徑,以斜線(/)開(kāi)始。
特殊的代字符(~)作為用戶主目錄的縮寫(xiě)。
當(dāng)前目錄為".";
父目錄為“..”;
這些概念和Linux里面一樣。
每個(gè)文件方法都是對(duì)NSFileManager對(duì)象的調(diào)用,
而NSFileManager對(duì)象是通過(guò)向類(lèi)發(fā)送一條defaultManager消息創(chuàng)建。
iOS的設(shè)備上,程序是運(yùn)行在沙盒中的,它嚴(yán)格限定了文件的訪問(wèn)。
如果在設(shè)備中運(yùn)行這個(gè)程序,會(huì)看到當(dāng)前目錄是/,
這說(shuō)明應(yīng)用的根目錄是在運(yùn)行它的沙盒中,并不是整個(gè)iOS設(shè)備文件目錄的根。
可以這么理解,每一個(gè)應(yīng)用程序都是一個(gè)進(jìn)程,這樣它的作用范圍就是進(jìn)程的上下文。沙盒就是進(jìn)程。
這個(gè)和Android是一樣的道理。
Android中,每個(gè)應(yīng)用都運(yùn)行在一個(gè)進(jìn)程中,每個(gè)應(yīng)用都有自己的pid,即進(jìn)程號(hào)。
也不能隨便訪問(wèn)別的進(jìn)程的數(shù)據(jù)或者奔潰時(shí)影響到其它應(yīng)用。這就是沙盒的原理。
其實(shí),這些相同點(diǎn)都是因?yàn)樗鼈儍蓚€(gè)生態(tài)的最底層OS都是unix類(lèi)似的原理所致。
熟悉Unix的同學(xué)都知道,進(jìn)程,用戶這些概念,其實(shí)就是沙盒的概念。
使用路徑用NSPathUtilities.h
components是一個(gè)NSArray對(duì)象,它包含路徑中每一部分的字符串對(duì)象,
Path是一個(gè)字符串對(duì)象,它指定文件的路徑;ext是路徑擴(kuò)展名的字符串對(duì)象。如@“mp3”
為了保存數(shù)據(jù)直到下一次運(yùn)行程序仍能夠使用,可以使用Documents目錄。
每個(gè)iOS應(yīng)用都有自己的Documents目錄供數(shù)據(jù)寫(xiě)入。
應(yīng)用中的Caches目錄也可以用來(lái)存儲(chǔ)一些數(shù)據(jù)。
對(duì)于iOS開(kāi)發(fā)說(shuō),Apple鼓勵(lì)開(kāi)發(fā)者存儲(chǔ)持久化數(shù)據(jù)到云端。
對(duì)于這些Documents的理解,可以這么理解,每個(gè)應(yīng)用程序都是一個(gè)用戶。
在類(lèi)Unix系統(tǒng)中,每一個(gè)用戶其實(shí)都是在home目錄(Linux系統(tǒng)的home)下的不同用戶文件夾分開(kāi)。
不同用戶名文件夾中都有基本的文件夾,Documents,Downloads這類(lèi)的。
簡(jiǎn)言之,應(yīng)用程序一般都屬于某一個(gè)用戶(UserId),某一個(gè)進(jìn)程(Pid)。
而且一般情況下不同應(yīng)用程序的用戶標(biāo)識(shí)和進(jìn)程標(biāo)識(shí)都是不一樣的。這就是所謂沙盒原理。
NSProcessInfo類(lèi)中的argments方法返回一個(gè)字符串對(duì)象數(shù)組。
數(shù)組的第一個(gè)元素是進(jìn)程名稱,其余的元素是在命令行中輸入的參數(shù)。
這個(gè)類(lèi)主要用來(lái)記錄當(dāng)前進(jìn)程的信息。
其實(shí),我們都知道,unix下的進(jìn)程入口都是main函數(shù)。
這也就是為什么NSProcessInfo會(huì)記錄命令行中的輸入?yún)?shù)的原因。
命令行中的輸入?yún)?shù)都是通過(guò)main函數(shù)的入?yún)魅氲摹?/span>
基本文件操作:NSFileHandle,可用于標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤和控設(shè)備。
應(yīng)該注意NSFileHandle類(lèi)并沒(méi)有提供創(chuàng)建文件的功能。
創(chuàng)建文件須使用FileManager的方法來(lái)創(chuàng)建。
另外,Unix系統(tǒng)下,應(yīng)注意,打開(kāi)文件進(jìn)行寫(xiě)入并不會(huì)截?cái)辔募?,需要自己完成截?cái)唷?/span>
NSURL對(duì)象并不是一個(gè)字符串(如@“http://blog.csdn.net/haomengzhu”),
但是使用URLWithString:方法可以由一個(gè)字符串對(duì)象創(chuàng)建出NSURL對(duì)象。
NSBundle類(lèi):
當(dāng)創(chuàng)建一個(gè)應(yīng)用時(shí),系統(tǒng)存儲(chǔ)了應(yīng)用相關(guān)聯(lián)的所有數(shù)據(jù)(其中包括圖片、本地化字符串、圖標(biāo)等),
將這些內(nèi)容放入一個(gè)稱為應(yīng)用包(application bundle)的包中。
在應(yīng)用中添加一個(gè)資源(如圖片或文本文件),僅需將文件拖到Xcode的左邊窗格中。
mainBundle方法給出了應(yīng)用包所在的目錄。這個(gè)方法在Mac OS X和iOS中都適用。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。