Xcode6 模擬器路徑

Xcode6發(fā)布后,出現(xiàn)了很多的變動(dòng),功能性的變動(dòng),在這里不進(jìn)行過多的贅述,在WWDC上蘋果已經(jīng)進(jìn)行了講述,網(wǎng)上也有很多文章,這里要介紹的是一些不太容易發(fā)現(xiàn)的,但很重要的小地方。

1、Xcode6模擬器路徑的變更

在Xcode5和之前的版本中,Xcode的模擬器路徑為:/Users/username/Library/Application Support/iPhone? Simulator。在該文件夾下,可以查看到所有的模擬器版本,點(diǎn)進(jìn)去后,可查看應(yīng)用沙盒情況。

在開發(fā)中,建議將文件拖動(dòng)快捷路徑到Finder左側(cè)個(gè)人收藏下,可以方便打開查看應(yīng)用沙盒。

在Xcode6中,將模擬器的位置進(jìn)行了變更,地址如下:/Users/username/Library/Developer/CoreSimulator,打開后會(huì)發(fā)現(xiàn)如下情況:

在這里,蘋果對(duì)模擬器進(jìn)行了編碼處理,并不是以模擬器系統(tǒng)版本進(jìn)行的命名和分類,而是對(duì)Xcode6中所有的模擬器進(jìn)行的區(qū)分,里面的16個(gè)文件夾分別對(duì)應(yīng)的Xcode6中的16種模擬器 ,那如何根據(jù)這個(gè)看似亂碼的文件夾,判斷出是哪一款模擬器呢?

選中某個(gè)文件后,打開會(huì)看到一個(gè)名為data的文件夾,和device.plist的配置文件,打開device.plist的配置文件后,會(huì)看到模擬器的UDID、設(shè)備類型、系統(tǒng)版本、名稱等。通過這個(gè)可以知道模擬器的設(shè)備和系統(tǒng)版本。打開后,會(huì)發(fā)現(xiàn),前面的看似亂碼的文件名稱,其實(shí)就是模擬器的設(shè)備UDID,雖然從這里可以得到模擬器的UDID,蘋果也用它來進(jìn)行分類模擬器,但在實(shí)際的編程中,如果想最后發(fā)布到APP Store的話,還是放棄UDID吧,這也是蘋果比較霸道的一點(diǎn),當(dāng)然了也是在保護(hù)用戶隱私的情況下做出的。

2、應(yīng)用沙盒地址的變更

得到了模擬器路徑后,還是用很多的不同的,應(yīng)用的沙盒地址也和之前有所不同。

在Xcode5及之前的版本中,沙盒地址為如下:/Users/username/Library/Application Support/iP hone? Simulator/7.0.3/Applications,在Applications文加下,會(huì)找到應(yīng)用程序的沙盒。

在打開應(yīng)用沙盒后,會(huì)有應(yīng)用程序文件、Document文件夾、Library文件夾、tmp文件夾。至于這幾個(gè)文件夾的作用不在此做贅述。

在Xcode6中,應(yīng)用程序文件、Document文件夾、Library文件夾、tmp文件夾這四個(gè)文件放在了不同的目錄中。應(yīng)用程序文件路徑:/Users/username/Library/Developer/CoreSimulator/Devices/模擬器UDID/data/Containers/Bundle/,Application文件夾下;Document文件夾、Library文件夾、tmp文件夾路徑:/Users/username/Library/Developer/CoreSimulator/Devices/模擬器UDID/data/Containers/Data/,Application文件下。但是不幸的是,這兩個(gè)路徑打開后的文件名,還是經(jīng)過編碼過的,而且,同一個(gè)應(yīng)用中的應(yīng)用程序文件和D、L、t文件夾所在的文件夾的文件名是不同的。只能自己找。

3、NSUserDefault 文件存儲(chǔ)位置變更

NSUserDefault是iOS提供的本地化數(shù)據(jù)存儲(chǔ)方式,會(huì)在沙盒中自動(dòng)創(chuàng)建一個(gè).plist的配置文件,將數(shù)據(jù)保存起來,在讀取時(shí),以NSDictionary字典來進(jìn)行接收

在Xcode5及之前的版本中,具體的路徑為:/Users/shifengwei/Library/Application Support/iPhone Simulator/7.0.3/Applications/C9588981-3D82-49BC-92B8-F5BA72185629/Library,Preferences文件夾下,名稱為程序Bundle Identifier的plist文件。在刪除模擬器中的程序后,在Library文件夾下的plist文件會(huì)相應(yīng)的刪除。

在Xcode6中,程序?qū)κ褂肗SUserDefault方式創(chuàng)建的plist文件的位置進(jìn)行了更換,具體路徑為:/Users/username/Library/Developer/CoreSimulator/Devices/模擬器UDID/data/Library,Preferences文件夾下。

這里特別說一下,如果按照在Finder里打開的路勁來看,并不是這樣的,但通過 Finder,前往文件夾,通過該路徑查找是可以查到的。上述的路徑地址是通過查看Preferences文件夾的顯示簡(jiǎn)介獲得的。

通過上述的路徑可以看出,通過NSUserDefault創(chuàng)建的plist文件夾還是在Library文件下,但不同的是,真正存放的位置變了,成了在模擬器的資料庫文件夾下,這樣的改變所產(chǎn)生的變化就是,當(dāng)我們?cè)趧h除模擬器中的應(yīng)用程序后,plist文件還是會(huì)保留,并不會(huì)刪除。

那么,既然模擬器中的位置變了,那升級(jí)到iOS8后,在這方面有什么不同呢?下面就說說在在真機(jī)中調(diào)試的不同。

1、Organizer中,在Xcode5中,是Devices、Projects、Archives三欄,而在Xcode6中,單獨(dú)將Devices拿了出來,成了和Organizer平級(jí)的,在Xcode菜單欄,Window下。如果了解過Xcode從4.X升級(jí)到5時(shí),就會(huì)知道,Organizer在那個(gè)時(shí)候也變更過,從原來的四欄變成了三欄,將幫助文檔移除了。

2、在進(jìn)行真機(jī)調(diào)試時(shí),會(huì)打開真機(jī)中應(yīng)用程序的沙盒,進(jìn)行查看,在Xcode中,? 打開Devices的Application中,可以下載下來應(yīng)用程序的沙盒,通過右擊顯示包內(nèi)容來查看沙盒的信息。但是在iOS8和iOS7及之前出現(xiàn)了不同。

上圖為同一款應(yīng)用在不同的系統(tǒng)中所表現(xiàn)的,左圖為iOS8下,下載下來的沙盒內(nèi)容,右圖為iOS7.0.4下,下載下來的沙盒內(nèi)容,很顯然,在iOS8下,通過Devices下載的沙盒內(nèi)容無法查看沙盒里面的內(nèi)容。

我們通過第三方的軟件,在這里使用的是iFunBox,找到應(yīng)用程序后,打開發(fā)現(xiàn)可以查看到沙盒的內(nèi)容,復(fù)制到本地后,發(fā)現(xiàn),原本的5個(gè)文件,只有3個(gè),也就是Document文件夾、Library文件夾、tmp文件夾三個(gè)。

這里特別說一下,上述提到過的,在模擬器中,通過NSUserDefault自動(dòng)創(chuàng)建的plist文件,在刪除軟件后,還會(huì)保留,但在真機(jī)中,也是會(huì)刪除的,相應(yīng)的plist文件的路徑到了通過導(dǎo)出的Library文件夾下的Preferences文件夾下,刪除應(yīng)用程序后,不會(huì)保留。這應(yīng)該算是一個(gè)真機(jī)和模擬器中的不同。

這個(gè)不同會(huì)造成一種情況,那是否還可以使用NSUserDefault?就筆者目前來看,還不至于廢棄NSUserDefault,畢竟它只是在模擬器中會(huì)出現(xiàn)刪除應(yīng)用保留的情況,在真機(jī)中不會(huì),而且NSUserDefault在開發(fā)中,作為數(shù)據(jù)持久化,在保存數(shù)據(jù)時(shí),還是很好用的。當(dāng)然了,也有開發(fā)者會(huì)不適應(yīng)這種情況,擔(dān)心在真機(jī)中會(huì)出現(xiàn),如果有開發(fā)者認(rèn)為不適應(yīng)的話,可以自己創(chuàng)建一個(gè)plist文件在沙盒中,代替,但是如果說應(yīng)用中使用的NSUserDefault比較多的話,不建議這樣,畢竟蘋果封裝的NSUserDefault還是很好用的。可以在模擬器刪除文件后,在保存plist文件的文件夾下,將plist文件刪除即可,多個(gè)步驟而已,至少目前來看,在真機(jī)中還是和之前一樣的。

當(dāng)然,在iOS中,除了NSUserDefault會(huì)系統(tǒng)自動(dòng)生成文件進(jìn)行數(shù)據(jù)保存外,歸檔也是一樣的,由于筆者沒有進(jìn)行測(cè)試,為了避免誤導(dǎo),這里就不說了,待測(cè)試后,進(jìn)行總結(jié)發(fā)布。

PS:最后補(bǔ)充一下,打開或關(guān)閉Mac的隱藏文件的命令。

打開Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool true

關(guān)閉Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false

方法:在終端中,輸入該命令,回車,然后在強(qiáng)制退出中,重啟Finder,即可。

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

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

  • 1,NSObject中description屬性的意義,它可以重寫嗎?答案:每當(dāng) NSLog(@"")函數(shù)中出現(xiàn) ...
    eightzg閱讀 4,340評(píng)論 2 19
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,628評(píng)論 30 472
  • 1、 沙盒概念基本介紹 iOS 應(yīng)用程序只能在該 app 的文件系統(tǒng)中讀取。這個(gè)默認(rèn)的 app 文件系統(tǒng)就是我們說...
    Laughingg閱讀 2,940評(píng)論 2 10
  • 循環(huán)引用:http://ios.jobbole.com/82077/類別的作用功能:1.擴(kuò)充現(xiàn)有類的功能2.對(duì)現(xiàn)有...
    得一切從簡(jiǎn)閱讀 585評(píng)論 0 1
  • 相比一階段的連續(xù)高燒,二階段的學(xué)習(xí)過程非常輕松愉快!尤其是使用了思維導(dǎo)圖后,終于可以綱舉目張地理解導(dǎo)師的思路,這個(gè)...
    Sophia的麥子閱讀 235評(píng)論 0 1

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