On Fri, May 14, 2010 at 1:12 PM, Ken Ferry <[email protected]> wrote: > On Wed, May 5, 2010 at 11:33 AM, Michael Ash <[email protected]> wrote: >> >> On Wed, May 5, 2010 at 2:29 PM, Jens Alfke <[email protected]> wrote: >> > >> > On May 5, 2010, at 8:50 AM, Michael Ash wrote: >> > >> >>> Delegates are the only reason the doc says anything other than "go >> >>> nuts". >> >>> This is what both Jens and I were trying to say. >> >> >> >> Is this true for all OS X versions, for 10.6+, or some other >> >> combination? >> > >> > For all, I think, although the issue doesn’t apply prior to 10.5 because >> > there wasn’t a delegate. Aside from the delegate, NSFileManager is really >> > just a stateless procedural API wrapped up in an object instance, so it has >> > the same thread safety as the underlying filesystem calls, i.e. “go nuts”. >> >> That's what I would have thought, but it was explicitly listed as not >> being thread safe before 10.5, and is still listed as "v10.5 and >> later" next to the entry that marks it as thread safe in the Cocoa >> thread safety summary. >> >> Just because the API is stateless doesn't mean the object itself >> doesn't have any state underneath. It *shouldn't*, but I'd tend to >> trust the API docs. >> >> However, I'm only targeting 10.5 these days, and that doc answers my >> question, so I'm in good shape! I should have looked there first. > > There did used to be thread-safety problems.. the class was redone when the > NSError returning methods were added in 10.5. > There was one lesser thread safety fix in 10.6. +defaultManager was > previously using the simple version of a singleton method Mike discusses at > <http://www.mikeash.com/pyblog/friday-qa-2009-10-02-care-and-feeding-of-singletons.html>. > This could potentially cause a crash if you managed to use the > defaultManager in the midst of its setup. > The workaround for 10.5 would be to call +defaultManager once from the main > thread before[1] it might happen on a background thread. This is pretty > likely to happen as a normal part of app initialization.
Thanks for the detailed reply! Regarding that 10.5 singleton safety bug, is this documented anywhere? It seems like there are a lot of minor bugs which get fixed in later OS revisions but persist in earlier ones that we often have to support for a while. There are often easy workarounds like this, but we don't find out they're necessary until we happen, by chance, to say the right thing to the right Apple engineer on a mailing list. I know Apple documentation concentrates heavily on the latest release, and with good cause, but it would be great if little stuff like this could make it in somewhere. I don't know if you're the right person to say this to, but I figured I'd mention it just in case. Mike _______________________________________________ Cocoa-dev mailing list ([email protected]) 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 [email protected]
