2013-01-16 63 views
1

NSCoding和NSCopying之間在低層次上的真正區別是什麼?NSCoding VS NSCopying

另外,他們是否應該獨立使用,一起使用還是何時使用哪一種?

回答

8
  • NSCopying是最接近於其他語言會被稱爲clone(),也就是說,它是用於立即產生(功能)的新對象作爲現有對象的翻版。

  • NSCoding與serialize()/deserialize最接近,也就是說,它用於將對象轉換爲可以在稍後重新啓動程序時可以持久存儲和恢復的形式。

正如你可以看到,他們不是在功能上非常相似,而且肯定應該能夠獨立使用。

2

雖然他們都創建了一個有問題的對象的副本,但它們以非常不同的方式進行。

協議實際上只是實現一組特定功能的承諾。在NSCopying的情況下它是-copyWithZone:並且在NSCoding的情況下它是–initWithCoder:-encodeWithCoder:

NSCopying用於製作對象的內存中副本 - 另一個相同的對象。

NSCoding用於創建一個序列化表示 - 一個NSData對象 - 或從這樣的表示創建一個對象。

1

NSCoding是關於序列化對象到光盤。

NSCopying即將被複制(在內存中)。