On Fri, 8 Oct 2010 13:16:54 -0600, Carter Allen <li...@cartera.me> said: >Hello everyone! > >I'm working on cleaning up an app that was written by a colleague of mine >a while ago, and one of the things that he did quite a bit was use >"properties" (declared as @properties, with custom getters/setters) that >are actually backed by NSUserDefaults. Seemingly, this was to provide >excellent persistence - no matter how the app closed or crashed, it >always remembered exactly what was going on. This is still important even >with the advent of multi-tasking, as I am still targeting 3.x, as well as >users without multi-tasking. > >Here's an example of one of his "properties": > >- (BOOL)gameShouldBeCounted { return [[NSUserDefaults >standardUserDefaults] boolForKey:@"gameShouldBeCounted"]; } >- (void)setGameShouldBeCounted:(BOOL)shouldBeCounted { > [[NSUserDefaults standardUserDefaults] setBool:shouldBeCounted >forKey:@"gameShouldBeCounted"]; > [[NSUserDefaults standardUserDefaults] synchronize]; >} > >Calling synchronize that often can't possibly be efficient, but it seems >to be the only way to make sure that defaults actually get written right >away. Does anyone have any recommendations of how to make this better? I >was thinking about some sort of KVC/O system, where actual ivars were >used and NSUserDefaultsController was set to observe them and update >asynchronously, but I have no idea where to start with a system like that.
That wouldn't make any difference. The only way to guarantee that defaults are written to disk right now is to call synchronize. However, there is also such a thing as being too paranoid. In general, just don't call synchronize; as long as your app exits in good order, your defaults will be written to disk (and this is just as true in a multi-tasking world). If you don't crash, you won't lose any data. If you do crash, there's another problem and you should concentrate on fixing it. m. -- matt neuburg, phd = m...@tidbits.com, <http://www.apeth.net/matt/> A fool + a tool + an autorelease pool = cool! AppleScript: the Definitive Guide - Second Edition! http://www.apeth.net/matt/default.html#applescriptthings _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com