Re: Self terminating popup window - need help
Re: Self terminating popup window - need help
- Subject: Re: Self terminating popup window - need help
- From: Joshua Orr <email@hidden>
- Date: Fri, 15 Apr 2005 10:55:01 -0600
That¹s because the run loop is still running, I think. When you close the
window, you might want to try stoping the run loop.
Look up NSRunLoop in apples developer documention.
Instead of uisng 'run' you could use:
runUntilDate:(NSDate *)date
And provide a NSDate of when the runloop should stop.
> It works the first time it is done, but after the window closes the
> execution does not return where it left off, and my program is
> unresponsive.
>
>
>
> On 4/14/05, Jagil Dragon <email@hidden> wrote:
>> I have never needed to run a timer in a thread other then the main thread
>> (which automatically has a run loop). In the method your new thead executes,
>> what you can try is this:
>>
>> NSPool *pool = [[NSAutoreleasePool alloc] init];
>> NSRunLoop *runLoop;
>> runLoop = [NSRunLoop currentRunLoop];
>> // Make your timer in here...
>> [runLoop run];
>> [pool release];
>>
>> Let me know if that does not work, because I have another idea that might.
>>
>>
>> Quoting Dan Yocom <email@hidden>:
>>> Is there a way to let my thread have a message run loop?
>>>
>>> On 4/14/05, Joshua D. Orr <email@hidden> wrote:
>>>> I am guessing you are using a NSTimer. Your new thread probably
>>>> does not have
>>>> a message run loop running, and NSTimer makes use of that.
>>>>
>>>> Quoting Dan Yocom <email@hidden>:
>>>>
>>>>> Hi,
>>>>> I created a subclass of NSWindow that automatically closes the
>>>>> window after three seconds. The subclass works as it should when
>>>>> called from a normal objective-C routine/function. However, if I call
>>>>> it from within a NSThread I create, it will popup but not close. Does
>>>>> anyone know why it won't work porpperly when call from within an
>>>>> NSThread?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------- Custom NSWindow class
>>>>> --------------------------------
>>>>>
>>>>> - (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned
>>>>> int)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag
>>>>> {
>>>>>
>>>>> NSWindow* result = [super initWithContentRect:contentRect
>>>>> styleMask:aStyle backing:NSBackingStoreBuffered defer:NO];
>>>>> [result setLevel: NSStatusWindowLevel];
>>>>>
>>>>> [self performSelector:@selector(closeSplashScreenPanel)
>>>>> withObject:nil afterDelay:3];
>>>>>
>>>>> return result;
>>>>> }
>>>>>
>>>>> - (void)closeSplashScreenPanel
>>>>> {
>>>>> [self release];
>>>>> }
>>>>>
>>>>> ---------------------------------- NSThread Stuff
>>>>> ---------------------------------------------
>>>>> [NSThread detachNewThreadSelector: @selector(MyThread) toTarget:self
>>>>> withObject:nil];
>>>>>
>>>>> - (void)MyThread
>>>>> {
>>>>> NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
>>>>>
>>>>>
>>>>> //Programatically Create and display window here
>>>>> //in my actuall program I have a hole bunch of
>>>>> stuff running in a while loop
>>>>>
>>>>>
>>>>> [pool release];
>>>>>
>>>>> }
>>>>>
>>>>> Any help would be great,
>>>>> Dan Yocom
>>>>> _______________________________________________
>>>>> Do not post admin requests to the list. They will be ignored.
>>>>> Cocoa-dev mailing list (email@hidden)
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>
>>>>> This email sent to email@hidden
>>>>>
>>>>
>>>>
>>>
>>
>>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden