2010-06-17 69 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

相关问题