On Dec 22, 2009, at 6:07 PM, PCWiz wrote:

The issue class in my case is NSLayoutManager. I dug through the docs for NSLayoutManager and read the section on thread safety. There were 2 steps to achieving thread safety with NSLayoutManager. First, if the NSLayoutManager belonged to an NSTextView, then the text view must not be displayed while a secondary thread is making changes using its layout manager. The second part was to turn off background layout for the NSLayoutManager.

In my case the layout manager was not tied to a text view (I was just using it to get the size of an attributed string) so all I had to do was this:

[layoutManager setBackgroundLayoutEnabled:NO];

Those are the two criteria I specified in the release notes as being essential for using NSLayoutManager on a background thread. In general, an NSLayoutManager and associated objects can be used from only a single thread at once, but as long as you have eliminated simultaneous accesses to them from other threads, they should be OK. The tricky part is that view display and background layout will happen automatically on the main thread, so you need to make sure those will not occur for your layout manager while you are using it on a background thread. If you have done that and still see threading issues, please file a bug.

Douglas Davidson

_______________________________________________

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

Reply via email to