2014-04-13 98 views
2

我想我只是不知道有什麼區別,因爲我不明白「黑匣子」,但使用這兩種方法之一有什麼區別?NSData與歸檔

當我應該使用

NSData 
writeToFile: atomically: 

我時,應使用

[NSKeyedArchiver archiveRootObject: toFile:] 

又有哪些利弊使用每個?

回答

1

這兩個API做不同的事情:

  • NSData寫出「原始」字節的文件。您可以通過假設您讀回的字節位於正確的位置來恢復這些字節後面的結構。從某種意義上說,這與在一塊具有某種結構的部件上使用曲奇切割機相類似,希望正確的部件出現在正確的位置。這種方法的直接後果是數據無法在代碼更改後存活 - 如果您讀取數據的結構確實發生更改,則在更改之前保存的數據將導致錯誤。
  • NSKeyedArchiver保留了對象的結構及其數據。這導致了一個稍大的檔案,但就基礎數據的倖存變化而言,結構變得更加穩健。

如果您需要保存一段簡單的非結構化數據,您可以使用任何一種。如果您保存的數據具有結構性,請選擇NSKeyedArchiver,尤其是如果您希望在將來保留一些靈活性。