On Sep 21, 2010, at 5:55 AM, Rafael Cerioli wrote: > Hi, > > I'm trying to understand how run loops work. I've written this useless piece > of code and I'm not sure why "success" does not show up... > What happens is that waitUntilReady never terminates, because it seems that > the runUntilDate in myButtonAction never ends as well.
Yes, as that is what your code is doing. > My theory would be that calling a runUntilDate from myButtonAction > (myButtonAction is started by a run loop observer) will just prevent other > sources and observers in the *current* run loop's loop (or run loop's run ??) > to be processed until myButtonAction terminates. No--there is no "prevention" whatsoever. -runUntilDate: tells the current runloop *specifically* to process all input sources, and to not exit until all sources are processed *and* the specified expiration date has been reached. > So, waitUntilReady's call to runUntilDate would prevent the end of > myButtonAction's current run loop's loop. > > Does someone have more info about that ? > > - (void) myButtonAction { > // A button event has been sent, waking up the run loop and calling > that method > > // this will be called in 1 second > [self performSelector:@selector(waitUntilReady) withObject:nil > afterDelay:1]; This is an input source, so the runloop will not exit until the method exits. > // process the current run loop during 10 seconds : > [[NSRunLoop currentRunLoop] runUntilDate:[NSDate > dateWithTimeIntervalSinceNow:10]]; Which never happens, as you never get to this line, because the method cannot exit. > [self setReady:YES]; > } > > - (void) waitUntilReady { > > while(![self isReady]) { > // this should just process the run loop once : > [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]]; > } > > NSLog(@"success!"); > } HTH, Keary Suska Esoteritech, Inc. "Demystifying technology for your home or business" _______________________________________________ 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