On Thu, Sep 6, 2012, at 09:09 AM, John MacMullin wrote: > More or less. > > It appears that since the documentation in NSBundle does not state that > its thread safe, it isn't.
This really isn't the whole story. NSBundle isn't thread-safe (don't send it messages from multiple threads), but is probably safe to use from non-main threads, as long as it's only used from one thread. By contrast, you should NEVER load a nib from a background thread. AppKit is very dependent on running on the main thread. > > From Core Animation tho, it would appear that executing a CATransaction > flush may have resolved my original message, but perhaps not the problem. > > If I read this correctly, this updates the layers, which wouldn't > otherwise be updated on a background thread. Doubtful; +flush pushes values from the model tree to the presentation tree, but it doesn't actually close a transaction. You'd still have an open transaction when the thread was exited. > > It would seem that if I call a non-thread safe function in a background > thread, i.e., from an NSOperationQueue, that a compile or other error > should result. In order to know that you're doing this, the compiler would need to be able to simulate execution of your code. Given the design of the C type system and program execution model, this is an impossibility. You cannot build a compiler with this functionality that will also allow compilation of all valid C programs. You could design a language with this safety feature (for example, a "background" attribute built into the type system), but there would then exist valid programs that the compiler would reject. C prefers to let you shoot yourself in the foot rather than restrict you from writing programs simply because the compiler cannot prove they are correct. --Kyle Sluder _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com