Fair enough, I s'pose that makes sense for most apps. Since I'm targeting 10.4+, and, actually, am using CFPreferences instead of NSUserDefaults, I wrote a simple "autosynchronize" mechanism that synchronizes preferences if needed at the end of the runloop. It lets multiple defaults be changed at once without extra disk use and ensures that recently-changed ones aren't lost.
It's working just fine for this situation. On Tue, Sep 8, 2009 at 8:56 PM, Ken Ferry <kenfe...@gmail.com> wrote: > Hi Jens, > On Tue, Sep 8, 2009 at 4:24 PM, Jens Alfke <j...@mooseyard.com> wrote: >> >> On Sep 8, 2009, at 4:13 PM, Sidney San Martín wrote: >> >>> "Because this method is automatically invoked at periodic intervals, use >>> this method only if you cannot wait for the automatic synchronization (for >>> example, if your application is about to exit)" >> >> To my knowledge that's always been incorrect — the only time >> NSUserDefaults synchronizes automatically is upon quit. The app can change a >> default, stay running for days, then crash; and the default won't have been >> written to disk so the change is lost. So I've always ended up calling >> -synchronize myself, either immediately or using a perform-after-delay. > > No, it does actually behave as documented. In 10.6 I know it syncs after 15 > seconds. > I cannot find the bug where it was added, but it's been true since at least > 10.5. >> >> Will NSUserDefaults ever synchronize itself itself in an app without an >> NSApplication? If so, when and how? If not, the docs need to be ammended. > > Yes, it's NSTimer based. Your app must be running the run loop for the > synchronization to occur. > -Ken _______________________________________________ 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