2010-06-17 67 views
1

當我用NSKeyedUnarchiver取消存檔對象後,我可以像往常一樣使用它,但我無法將其重新歸檔。當我嘗試時,它崩潰。未歸檔對象會發生什麼情況?

[NSKeyedArchiver archiveRootObject:unarchivedObject toFile:fileName]; 

我試着在蘋果的開發人員資源中尋找,但我沒有看到正確使用NSKeyedArchiver的徹底探索。請幫忙。

Exception Type: EXC_BAD_ACCESS (SIGBUS) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000023 
Crashed Thread: 0 Dispatch queue: com.apple.main-thread 

Application Specific Information: 
objc_msgSend() selector name: replacementObjectForKeyedArchiver: 
iPhone Simulator 3.2 (193.8), iPhone OS 3.2 (iPad/7B367) 

Thread 0 Crashed: Dispatch queue: com.apple.main-thread 
0 libobjc.A.dylib     0x958a0ed7 objc_msgSend + 23 
1 OGLGame       0x0000c7e2 -[Sounds encodeWithCoder:] + 59 (Sounds.m:86) 
2 Foundation      0x0280d25b _encodeObject + 827 
3 Foundation      0x028243cc -[NSKeyedArchiver _encodeArrayOfObjects:forKey:] + 284 
4 Foundation      0x0281a367 -[NSArray(NSArray) encodeWithCoder:] + 615 
5 Foundation      0x0280d25b _encodeObject + 827 
6 OGLGame       0x0000ebc2 -[Row encodeWithCoder:] + 244 (Row.m:153) 
7 Foundation      0x0280d25b _encodeObject + 827 
8 Foundation      0x028243cc -[NSKeyedArchiver _encodeArrayOfObjects:forKey:] + 284 
9 Foundation      0x0281a367 -[NSArray(NSArray) encodeWithCoder:] + 615 
10 Foundation      0x0280d25b _encodeObject + 827 
11 Foundation      0x0285de10 +[NSKeyedArchiver archiveRootObject:toFile:] + 176 

據我所知,它可能是我的Sounds類。當你檢查結束時,我會檢查它。

雖然,經過研究,我發現這一點:

replacementObjectForKeyedArchiver: 

由子類重寫鍵的歸檔過程中替代另一個對象本身。

  • (ID)replacementObjectForKeyedArchiver:(*的NSKeyedArchiver)歸檔

參數 歸檔 一個密鑰歸檔創建歸檔。 返回值 對象編碼而不是接收者(如果不同)。

討論 此方法僅如果對於對象沒有替換映射已在編碼器中被設置(:到該對象,例如,由於replacementObjectForKeyedArchiver的先前呼叫)調用。

+0

您需要發佈'內容 - [聲音encodeWithCoder:]'。請嘗試在發佈其他人/女士需要了解錯誤時想一想。有想象力! – Yuji 2010-06-17 22:27:08

+0

是否每個對象都符合您想歸檔的「NSCoding」協議? – holex 2014-12-02 17:26:08

回答

0

Apple dev論壇上的一個線程似乎表明replacementObjectForKeyedArchiver:在您嘗試編碼的對象上被調用。這聽起來像是你正試圖在-[Sounds encodeWithCoder:]內編碼的對象之一已經從內存中釋放,並且replacementObjectForKeyedArchiver:被稱爲導致seg故障。

https://devforums.apple.com/message/1079616

相關問題