首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编码效率与执行效率

编码效率与执行效率
EN

Stack Overflow用户
提问于 2016-02-27 18:36:49
回答 2查看 47关注 0票数 0

所以我有这两种方法:

代码语言:javascript
复制
-(void)importEvents:(NSArray*)allEvents {
    NSMutableDictionary *subjectAssociation = [[NSMutableDictionary alloc] init];

    for (id thisEvent in allEvents) {
        if (classHour.SubjectShort && classHour.Subject) {
            [subjectAssociation setObject: classHour.Subject forKey:classHour.SubjectShort];
        }
    }

    [self storeSubjects:subjectAssociation];
}

-(void)storeSubjects:(NSMutableDictionary*)subjects {
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir  = [documentPaths objectAtIndex:0];
    NSString *subjectsList = [documentsDir stringByAppendingPathComponent:@"Subjects.plist"];

    [subjects writeToFile:subjectsList atomically:YES];
}

第一个循环遍历一个由100个项组成的数组,并构建一个包含大约10个唯一键/值对的NSMutableDictionary。

第二个方法将这个字典写到一个文件中,以便在我的应用程序中的其他地方引用。

第一个方法经常被调用,第二个方法也是如此。但是,我知道,一旦构建并保存了字典,无论我调用这些方法的频率如何,它的内容都不会改变,因为可能值的数量是有限的。

问:考虑到第二个方法实际上只需要执行一次,我是应该添加一些行来检查文件是否已经存在,本质上是添加需要执行的代码,还是可以让它保持原样,一遍又一遍地覆盖现有文件?

我应该关心吗?我应该补充说,我似乎没有受到任何性能问题的困扰,所以这更多的是一个哲学/卫生问题。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-02-27 20:26:43

那得看情况。

你说

构建并保存字典后,其内容将永远不会更改

在此之前:-)

如果你的应用程序在这个特定的循环中没有任何性能问题,我不会尝试缓存,原因是除非你以某种方式记住你在文件上只有一次写入,否则你会为以后存储一个bug。

这可以通过在方法上使用意图揭示名称来缓解。i.e

代码语言:javascript
复制
-(void)storeSubjectsOnceOnlyPerLaunch:(NSDictionary*)subjects

如果我有时间追踪缓存引起的bug,我的生活中就会有好几天。

票数 1
EN

Stack Overflow用户

发布于 2016-02-28 01:19:07

您的解决方案完全是过度设计的,并且有大量出错的可能性。如果用户驱动器已满怎么办?是否备份此文件?它是否需要备份/您是否在浪费用户的时间进行备份?这会失败吗?你能处理好吗?你专注于数据的输入和存储,你应该专注于访问这些数据。

我有一个readwrite属性allEvents和一个属性eventAssociations,在接口中声明为readonly,但在实现文件中声明为readwrite。

allEvents设置器存储allEvents并将_eventAssociations设置为nil。eventAssociations获取方法检查_eventAssociations是否为空,并在需要时重新计算它。一种简单且防弹的模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35668652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档