Недавно я изменил немного кода, используя Archiver, чтобы заменить декодируемый объект другим, если объект находился в общем списке. Мое приложение использует ARC.
- (id)awakeAfterUsingCoder:(NSCoder*)decoder {
Player* player = [[Team getCurrentTeam] getPlayerWithId: self.id];
// If the player is in the current team then use that instance instead of this one.
if (player != nil) {
return player;
} else {
return self;
}
}
Код работал отлично, пока я не добавил awakeAfterUsingCoder. Теперь я получаю malloc: ошибка для объекта 0x7567430: освобожденный указатель не выделен . Может показаться, что заменяемый объект освобождается, но он так и не был сохранен? Поскольку я использую ARC, я не уверен, что я мог бы сделать, чтобы решить эту проблему.