2012-06-21 42 views
0

我正在設計一個對象持久代碼。 IMO,內存快照是最快,最可靠和緊湊的永久性方法。我可以快照並恢復Objective-C對象圖的內存嗎?

C結構很簡單。我可以手動佈局所有對象的內存佈局。我可以將所有引用保存爲對象集合的索引。所以參考不是問題。

無論如何,我想嘗試與Objective-C對象。爲此,對象必須位於內存的特定位置。所以,如果我可以指定分配的內存位置,我可以快照內存。當恢復時,我可以在特定地址獲得對象。

當然,所有這些都是機器特有的,需要很多技巧,但對我來說很好。 唯一的問題是我不知道如何指定新的Objective-C對象的位置。我怎樣才能做到這一點?

回答

0

通常人們使用NSCodingNSKeyedArchiver(或其一些自定義子類)。我認爲你的C方法會在64位運行時之前工作,因爲對象的數據部分是使用結構實現的,但我認爲新的運行時使用非易失性實例變量會使問題複雜化。在任何情況下,加載持久化對象的程序仍然需要爲它們定義類別定義,可以是硬編碼的,也可以是通過bundle加載的。