FROM : Nate Weaver
DATE : Thu Feb 28 22:31:48 2008
On Feb 28, 2008, at 3:18 PM, Hank Heijink wrote:
>
> On Feb 28, 2008, at 2:56 PM, Nate Weaver wrote:
>
>>> Interesting... I hadn't thought of that. Don't I have to add
>>> another timer to the NSDefaultRunLoopMode though? If I have to
>>> chose between having two timers on the main thread that alternate,
>>> or one on a secondary thread, I think I'll go with the extra thread.
>>
>> I don't believe so; I've used it in an app of my own with a single
>> timer to avoid the same issue you're having, with no apparent ill
>> effects.
>
>
> That's not my experience. If I just add a timer for the
> NSEventTrackingRunLoopMode, the only time that timer fires is when
> the run loop is in event tracking mode, which is what I would
> expect. In the NSDefaultRunLoopMode, that timer doesn't fire at all.
> Are you doing something somewhere else to make this happen, or am I
> missing something?
How did you create the timer? Via +scheduledTimerWithTimeInterval:...
or +timerWithTimeInterval:... ? If you use the latter, you'll have to
add it to NSDefaultRunLoopMode yourself. I just do something like:
myTimer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self
selector:@selector(doTimerStuff:) userInfo:nil repeats:YES] retain];
[[NSRunLoop mainRunLoop] myTimer forMode:NSEventTrackingRunLoopMode];
and it works during both modes (the retain there probably isn't
necessary in the general case, either).
DATE : Thu Feb 28 22:31:48 2008
On Feb 28, 2008, at 3:18 PM, Hank Heijink wrote:
>
> On Feb 28, 2008, at 2:56 PM, Nate Weaver wrote:
>
>>> Interesting... I hadn't thought of that. Don't I have to add
>>> another timer to the NSDefaultRunLoopMode though? If I have to
>>> chose between having two timers on the main thread that alternate,
>>> or one on a secondary thread, I think I'll go with the extra thread.
>>
>> I don't believe so; I've used it in an app of my own with a single
>> timer to avoid the same issue you're having, with no apparent ill
>> effects.
>
>
> That's not my experience. If I just add a timer for the
> NSEventTrackingRunLoopMode, the only time that timer fires is when
> the run loop is in event tracking mode, which is what I would
> expect. In the NSDefaultRunLoopMode, that timer doesn't fire at all.
> Are you doing something somewhere else to make this happen, or am I
> missing something?
How did you create the timer? Via +scheduledTimerWithTimeInterval:...
or +timerWithTimeInterval:... ? If you use the latter, you'll have to
add it to NSDefaultRunLoopMode yourself. I just do something like:
myTimer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self
selector:@selector(doTimerStuff:) userInfo:nil repeats:YES] retain];
[[NSRunLoop mainRunLoop] myTimer forMode:NSEventTrackingRunLoopMode];
and it works during both modes (the retain there probably isn't
necessary in the general case, either).
| Related mails | Author | Date |
|---|---|---|
| Nate Weaver | Feb 28, 19:46 | |
| Hank Heijink | Feb 28, 20:49 | |
| Nate Weaver | Feb 28, 20:56 | |
| Hank Heijink | Feb 28, 22:18 | |
| Nate Weaver | Feb 28, 22:31 | |
| Hamish Allan | Feb 28, 23:01 | |
| Ron Fleckner | Feb 28, 23:16 | |
| Hank Heijink (Mail… | Feb 29, 20:43 |






Cocoa mail archive

