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 (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

Reply via email to