gpt4 book ai didi

objective-c - 使用 NSKeyedArchiver 时,应该使用访问器还是 ivars?

转载 作者:行者123 更新时间:2023-12-03 17:42:41 24 4
gpt4 key购买 nike

我有一个实现 NSCoding 协议(protocol)的模型类。我有一个名为 dataModel 的属性,它是此类的一个实例。当我将此实例保存到磁盘或从磁盘加载该实例时,我应该使用 dataModel 的合成访问器还是直接使用 ivars?为什么?

这是在 iOS 5 和 ARC 下,我的属性声明为:

@property (strong, atomic) QardDataModel *dataModel;

为了说明,这将是执行此操作的访问器方式:

-(void)saveData {
[NSKeyedArchiver archiveRootObject:self.dataModel toFile:[self saveFilePath]];
}

-(void)loadData {
self.dataModel = [NSKeyedUnarchiver unarchiveObjectWithFile:[self saveFilePath]];
}

有一个名为 saveFilePath 的便捷方法,它返回存档文件的路径。

最佳答案

如果您要归档/取消归档包含数百万个对象的数据集,则直接访问变量的性能优势非常小。

但是,如果您有那么多数据,通常可用 RAM 无法容纳它,因此您应该使用 SQLite 或 Core Data。

但是,如果您重复归档和取消归档大量小对象(数十万次),那么您应该使用 Instruments 检查 objc_msg_send 是否会拖累性能。直接访问变量是解决这个问题的方法。

除此之外,出于多种原因(没有一个特别重要),通常最好使用访问器方法。

关于objective-c - 使用 NSKeyedArchiver 时,应该使用访问器还是 ivars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com