在我使用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
据我所知,这可能是我的声音课程。我检查一遍时会检查一下。
虽然经过研究我发现了这个:
replacementObjectForKeyedArchiver:
在键控归档期间,子类重写以替换另一个对象。
参数 归档 密钥存档器创建存档。 回报价值 对象编码而不是接收器(如果不同)。
讨论 仅当在编码器中没有设置对象的替换映射时才调用此方法(例如,由于之前调用了replacementObjectForKeyedArchiver:到该对象)。
答案 0 :(得分:0)
Apple dev论坛上的一个帖子似乎表明在您尝试编码的对象上调用了replacementObjectForKeyedArchiver:
。听起来,您尝试在-[Sounds encodeWithCoder:]
内编码的对象之一已从内存中释放,replacementObjectForKeyedArchiver:
被称为导致seg错误。