Ben*_*uan 5 iphone cocoa-touch objective-c nskeyedarchiver ios
为什么 NSKeyedArchiver 性能这么差?与使用 NSArchiver 相比,大小翻了一番。
我正在使用以下行编码对象的 NSMutableArray
BOOL result = [NSArchiver archiveRootObject:self.appDataObject.materias toFile:archivePath];
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,因为它正确保存了文件,然后我可以取消归档它。它们大约有 3000 个对象,输出文件大约为900kB
当我将归档行更改为:
BOOL result = [NSKeyedArchiver archiveRootObject:self.appDataObject.materias toFile:archivePath];
Run Code Online (Sandbox Code Playgroud)
一切都神奇地工作,但文件大小增加了一倍多,达到2MB!
我为什么要问这个?因为我正在开发一个 iOS 应用程序,因此失去了对 NSArchiver 的支持。
| 归档时间: |
|
| 查看次数: |
4548 次 |
| 最近记录: |