2012-03-31 41 views
0

剛開始NSCoder + NSKeyedArchiver工作(我用Objective C的初學者)。encodeObject:encodeInt:編碼器不知道類型?

想知道爲什麼我們有編碼時指定的數據類型(encodeObject: encodeInt:等),因爲類型已經爲所有瓦爾定義。數據是否只是編譯時間輔助的東西,以防止運行時可能發生的類型不匹配?是否爲了速度,以便編碼器不必檢查類型?

簡單的問題,但我想知道更多的關於什麼是引擎蓋下回事。

回答

0

如果您發現,只有原語中列出。你不能寫原語成編碼器所以有方便的方法把它們變成實際的對象存儲它們(反之亦然)前。例如,encodeInt將把int變成一個NSNumber對象。否則,你將不得不每次都自己做;)。

+0

但由於INT被聲明爲int,爲什麼不NSCoder等只是弄清楚? - 這是我想知道的。我知道原始類型的具體方法。 – 2012-03-31 20:29:13

+0

因爲「int」不是一個對象,所以它是一個原語。它只能作爲「int」傳遞。 – borrrden 2012-04-01 01:24:37

相關問題