Thanks for this suggestion. Actually, once identified, I fixed the bug fairly 
quickly by postponing the task (dispatched a block on the main thread for that).
The bug was caused by two successive events arriving in a short timeframe so 
that the stack looked like that:

0 my callback
1 __CFSocketPerformV0
------------------------------------
9 initWithHTML:dataUsingEncoding:documentAttributes:
10 my function 1
11 my function 2
12 my callback
13 __CFSocketPerformV0
-----------------------------------
23 NSApplicationMain
24 main
25 Start

and my callback never was designed to be called a second time before the first 
call was finished. Dispatching a block to handle my function 1 fixed the issue.
However, information about initWithHTML:dataUsingEncoding:documentAttributes: 
running an event loop could be worth mentioning in the docs…

Jean


On 8 mai 2013, at 00:52, Ken Thomases wrote:

> On May 7, 2013, at 5:37 PM, Jean Suisse wrote:
> 
>> By any chance, could a call to [[NSAttributedString alloc] 
>> initWithHTML:dataUsingEncoding:documentAttributes:] lead to the event loop 
>> being run before the call returns?
> 
> Yes, it can.  Under the hood, NSAttributedString is using WebKit for HTML 
> rendering.  In part that means that, when invoked from a background thread, 
> it has to shunt the work to the main thread.  But it also means the main 
> thread may have to run the run loop during the call.  It's a nuisance, but 
> it's necessary since HTML can have references to external resources that need 
> to be loaded.
> 
> Consider the other method, -[NSAttributedString 
> initWithHTML:options:documentAttributes:] and its options dictionary, which 
> can have keys like NSTimeoutDocumentOption and 
> NSWebResourceLoadDelegateDocumentOption.  Those imply a pretty involved 
> process under the hood.  I'm fairly certain that this method is used for the 
> implementation of the method you're using.
> 
> You may be able to use those options to minimize the use of the run loop, but 
> probably not eliminate it.
> 
> Regards,
> Ken
> 

-----------
Jean Suisse
Institut de Chimie Moléculaire de l’Université de Bourgogne
(ICMUB) — UMR 6302
_______________________________________________

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

Reply via email to