【发布时间】:2014-03-10 16:25:09
【问题描述】:
所以我有一个小值需要通过 NSUserDefaults 在我的应用程序中同步。我发现自己从 NSUserDefaults 中保存并获取了一些值,我认为将 Getter / Setter 直接链接到 NSUserDefaults 可能会很好。
这是我的 Getter / Setter 代码:
- (void) setSomeProperty:(id)someValue {
[[NSUserDefaults standardUserDefaults]setObject:someValue forKey:@"someProperty"];
}
- (id) someProperty {
return [[NSUserDefaults standardUserDefaults]objectForKey:@"someProperty"];
}
这是我的访问方式:
someClass.someProperty = @"SomeValue"; // -- Set's To @"SomeValue"
id someValue = someClass.someProperty; // -- Assigns Value From NSUserDefaults
这样,当我更新或检索属性时,它总是直接访问 NSUserDefault 值。对我来说,这似乎是一种更简单的方式来写入和检索我的 NSUserDefaults 中的值,但我可能忽略了一些问题或性能考虑。感谢您提出反馈/疑虑。
问题
这是可以接受的做法吗?这会在以后引起问题吗?
【问题讨论】:
-
我做同样的事情。我从未见过问题。
-
我认为这样做绝对没问题,只是在将值保存为默认值时应该调用同步
-
@AndreyChernukha 您无需在每次设置值时都调用
synchronize。操作系统有时会自动同步默认值。 -
谢谢@rmaddy,我现在可以安心地继续前进了!
-
@rmaddy 如果要保证始终保存该值,请致电
synchronize。如果您在调试时使用 Xcode 终止应用程序,或者如果应用程序在您更改值后不久崩溃,它可能不会总是被保存,除非您调用synchronize。不过,我同意这不是必需的。
标签: ios objective-c properties nsuserdefaults