Re: Progress bar problems on server persist
Re: Progress bar problems on server persist
- Subject: Re: Progress bar problems on server persist
- From: Ken Thomases <email@hidden>
- Date: Thu, 05 May 2016 10:35:29 -0500
On May 5, 2016, at 10:16 AM, Steve Mills <email@hidden> wrote:
>
> On May 05, 2016, at 10:07 AM, Ken Thomases <email@hidden> wrote:
>
>> Don't do that. You must always shunt such work to the main thread.
>
> Hmm. Has that always been the case with OS X and/or Cocoa?
Yes.
> I know an app should not do any drawing from anything but the main thread, but I thought that all the cocoa controls were smart enough to not draw directly when their set* methods are called. E.g., calling setStringValue will set the internal string and do nothing more than call setNeedsDisplay:YES, deferring drawing to the next time the main thread gets some time. Did I forget or never learn something more critical than that?
Well, you're not supposed to call -setNeedsDisplay: from a background thread, either.
From <https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html#//apple_ref/doc/uid/10000057i-CH12-123427>:
"If a secondary thread of an application wants to cause portions of the view to be redrawn on the main thread, it must not do so using methods like display, setNeedsDisplay:, setNeedsDisplayInRect:, or setViewsNeedDisplay:. Instead, it should send a message to the main thread or call those methods using the performSelectorOnMainThread:withObject:waitUntilDone: method instead."
Regards,
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