我有一个实现NSCoding协议的模型类。 我有一个名为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的便捷方法,它返回已归档文件的路径。

===============>>#1 票数:1

它完全没有区别。

(尽管您可能会发现访问者更方便,因为您不需要明确retain

===============>>#2 票数:1 已采纳

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

但是如果你有那么多数据,通常它无论如何都不适合可用的RAM,所以你应该使用SQLite或Core Data。

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

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

  ask by lms translate from so

未解决问题?本站智能推荐:

6回复

使用ARC,有什么更好的:alloc或autorelease初始化器?

使用alloc或autorelease初始化器更好(更快,更高效)。 例如: 要么 我知道在大多数情况下,这里的表现无关紧要。 但是,我仍然希望养成以更好的方式做这件事的习惯。 如果他们做同样的事情,那么我更喜欢后一种选择,因为它的输入更短,更具可读性。 在Xco
2回复

使用块和ARC进行内存管理,泄漏?

我需要知道我是否正确地做到了。 应用程序运行正常但我不确定我的生命周期是否正确(泄漏?)。 注意:仪器看不到泄漏。 方法aaa的代码:某些类A的代码: 所以我创建了一个块来放置aQueue(NSOperationQueue *)。 目标是从主线程中卸载长时间运行的some
2回复

为什么“选择器x的未知方法”在ARC下是一个硬错误?

也许如果调用一个MyClass对某个类型的MyClass不理解的方法是一个错误而不是一个警告,因为它可能是一个错误或将来会导致错误... 但是,为什么这个错误特定于ARC? ARC根据可可内存管理约定决定它需要保留/释放/自动释放的内容,这表明知道选择器的名称就足够了。 因此,将SEL
1回复

不会使用ARC释放iVar

我在使用ARC的类的实现文件中将UIScrollView声明为iVar: 这是必要的,因为在执行过程中,有时需要将UIScrollView添加到我的视图中,而有时需要删除相同的UIScrollView : 我的期望是, tempScrollView一旦它从删除将被释放superv
1回复

苹果为什么要使用分配而不是弱者来存储代表?

一些可可和可可触摸类申报的委托属性assign ,而不是weak ,这迫使类的用户nil出在房地产dealloc 这很麻烦。 苹果为什么要这样做?
1回复

如何正确地解决“在ARC模式下弱接收器可能无法预测为空”

我在xcode中打开了一个新标志并收到警告“弱接收器在ARC模式下可能无法预测为空”。 这让我感到困惑,因为因为它可能是零。
2回复

从带有ARC的UIView调用dealloc时,我可以假定仍然保留ivars吗?

我将UIView的子类上的KVO观察器添加到其子视图之一。 我对子视图也有很强的参考。 当我在dealloc的子视图上调用removeObserver时,可以假定该子视图仍然存在吗? 我不想泄漏观察者。 基本上,在ARC中调用dealloc时,是在此调用之前还是之后自动调用[supe
2回复

你何时应该使用__bridge与CFBridgingRelease / CFBridgingRetain?

我有这个代码,使用“__bridge”来转换颜色的ID: 但会: 是一个更好的解决方案
1回复

我什么时候应该使用IBOutlets的弱或强定格符? [重复]

可能重复: 如果IBOutlets在ARC下是强还是弱? 在文档中,我读到“Outlets通常应该是弱的,除了那些从File的所有者到nib文件中的顶级对象(或者,在iOS中,故事板场景中)应该很强大。” 例子? 我不明白什么时候最好使用IBOutlet的“弱”而不是“强
2回复

我应该在库中使用Autoreleasepool吗

我有一个头文件(C Like) 而且我必须制作一个实现它的Obj-c库(或仅几个.m -s)。 调用该库的人都是C程序。 但是我不想手动处理内存分配,而是想使用ARC。 我可以在函数中使用autoreleasepool{}来使ARC正常工作并... 还是我必须回去几