Ben*_*uan 5 iphone cocoa-touch objective-c nskeyedarchiver ios
为什么 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];
一切都神奇地工作,但文件大小增加了一倍多,达到2MB!
我为什么要问这个?因为我正在开发一个 iOS 应用程序,因此失去了对 NSArchiver 的支持。
| 归档时间: | 
 | 
| 查看次数: | 4548 次 | 
| 最近记录: |