Почему производительность NSKeyedArchiver такая низкая? Размер удваивается по сравнению с использованием NSArchiver.
Я кодирую NSMutableArray объектов со следующей строкой
BOOL result = [NSArchiver archiveRootObject:self.appDataObject.materias toFile:archivePath];
NSMutableArray содержит пользовательские объекты, которые имеют свои соответствующие encodeWithCoder и initWithCoder
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject: _fileName];
[aCoder encodeObject: _categoria];
[aCoder encodeObject: _materia];
[aCoder encodeObject: _nombre];
[aCoder encodeObject: _position];
[aCoder encodeValueOfObjCType:@encode(BOOL) at:&_favorite];
}
-(id)initWithCoder:(NSCoder *)aDecoder
{
if (self=[super init]) {
[self setFileName:[aDecoder decodeObject]];
[self setCategoria:[aDecoder decodeObject]];
[self setMateria:[aDecoder decodeObject]];
[self setNombre:[aDecoder decodeObject]];
[self setPosition:[aDecoder decodeObject]];
[aDecoder decodeValueOfObjCType:@encode(BOOL) at:&_favorite];
}
return self;
}
он работает нормально, так как правильно сохраняет файл, а затем я могу его разархивировать. Это около 3000 объектов и выходной файл около 900kB
Проблема возникает, когда я меняю строку архивирования на:
BOOL result = [NSKeyedArchiver archiveRootObject:self.appDataObject.materias toFile:archivePath];
Все волшебно работает НО размер файла более чем удваивается до 2 МБ !
Почему я спрашиваю это? потому что я разрабатываю приложение для iOS и поэтому теряю поддержку NSArchiver.