Re: Getting the value of GUI elements from non-main threads
Re: Getting the value of GUI elements from non-main threads
- Subject: Re: Getting the value of GUI elements from non-main threads
- From: Ken Thomases <email@hidden>
- Date: Wed, 4 Feb 2009 15:10:19 -0600
On Feb 4, 2009, at 2:47 PM, Cem Karan wrote:
I know that we can only modify GUI elements from the main thread,
but can we get the values for objects from other than the main
thread? E.g., assume I have an editable NSTextField, and I have a
worker thread. The user edits the field, clicks a button, and the
main thread hands off the analysis to a worker thread. The worker
thread then directly queries the NSTextField via its stringValue
method. Is this kosher?
No. First, NSTextField isn't on the list of thread-safe classes.
But quite aside from that, even if it were safe, you could not be sure
the value you would get is the value you should get. It might have
changed since the task was started.
In the scenario you describe, the button action method should marshal
all of the inputs for the worker unit that's to be processed on the
worker thread. Those inputs should be passed as integral parts of the
work unit to the worker thread.
Cheers,
Ken
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden