Aha, so if I understood good, you use Notifications instead, so when the LoadDelegate finish it post the notifications, and then my controller which I should have added to listen to a given notification and perform the given selector, can get the dictionary having for sure it has some data which was instantiated in the loadFrame delegate method of webView.. am I right?
Gustavo? On Jan 26, 2010, at 2:13 PM, Louis Gerbarg wrote: > On Tue, Jan 26, 2010 at 7:52 AM, Gustavo Pizano <gustavxcodepic...@gmail.com> > wrote: > > I duno if its the best solution but it works.. Im open to hear other > approaches... > > > This isn't a threading issue, everything is happening on a single thread. The > issue is that you have a synchronous API that depends on an asynchronous API > underneath. You have correctly deduced that one way to handle this is to spin > in a loop (in this case an event loop) waiting for the asynchronous API to > complete so you can return the data. In many cases that is a reasonable > solution, though if you get several of these things nested together or are > using weird runloop modes you can start to have some very complex behaviors. > You also potentially need to make sure any code in the call stack leading up > to that runloop reentrant, depending on exactly what you are doing. > > Personally, I prefer to make my design asynchronous all the way up and down > the stack. So instead of implementing something like: > > -(NSDictionary *)pListWithWebElements; > > I might do: > > - (void) updatePListWebElements; //Exact same IMP except it doesn't return > anything > > and then in the load delegate: > > #pragma mark LoadFrameDelegate. > -(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame{ > //Your original code > .... > > [[NSNotificationCenter defaultCenter] > postNotificationName:@"PListWithWebElementsLoaded" object:self]; > } > > which would then fire an NSNotification at the time it was updated, and I > would just register a notification handler to deal with it. Depending on the > exact nature and complexity of what is going on it may also be apropriate to > implement your own delegate protocol and make calls into the delegate just > like the system does with your delegates. > > Louis > _______________________________________________ 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