在我的 Row 类中,我有 initWithCoder 方法,并且在该方法中恢复的所有内容都可以正常工作,但仅在该方法内。调用该方法后,我释放了 Row 类中的一组声音。声音类也有 initWithCoder 方法,声音播放良好但仅在 Row 类的 initWithCoder 方法中。解码 Row 对象后,声音数组完全消失,无法调用。
这是我的 initWithCoder 来源:
- (id) initWithCoder:(NSCoder *)coder {
...
soundArray = [coder decodeObjectForKey:@"soundArray"];
NSLog(@"%d",[soundArray count]);
return self;
}
日志显示计数为 8(这是在取消归档时)。然后我创建的行对象被分配。并且生成的行对象不再具有 soundArray。
[NSKeyedArchiver archiveRootObject:row toFile:@"DefaultRow"];
...
row = [NSKeyedUnarchiver unarchiveObjectWithFile:@"DefaultRow"];
所以现在每当我调用 soundArray 时,它都会崩溃。
//ERROR IS HERE
NSLog(@"%d",[[row soundArray] count]);
请帮忙(soundArray 是一个 NSMutableArray)。