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.
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.
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];
// process the current run loop during 10 seconds :
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate
dateWithTimeIntervalSinceNow:10]];
[self setReady:YES];
}
- (void) waitUntilReady {
while(![self isReady]) {
// this should just process the run loop once :
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];
}
NSLog(@"success!");
}
Thank you,
Rafael_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]