On 24.09.2008, at 01:20, Dan Birns wrote:
My application needs to set a timer that causes a function to be called at a time in the future. This is non-repeating, and sometimes has be immediate. I need it to be as efficient as possible, because it's called frequently.

Have you checked out the various performSelector: methods available? Particularly performSelector:withObject:afterDelay: seems to be a shorthand that might work much better. In any case though, watch out for Cocoa's run loop modes. By default, timers only get scheduled on NSDefaultRunLoopMode, so if you want your timer to also fire in NSModalPanelRunLoopMode or NSTrackingRunLoopMode (names from memory, may vary slightly), you may need to use the appropriate calls (the inModes: variant, or do an addTimer for the additional modes).

        self.timer = [NSTimer scheduledTimerWithTimeInterval:   t               
// seconds
                                                  target:       self
                                                selector:       @selector 
(mainLoopTimer:)
                                                userInfo:       nil             
                                                 repeats:       NO];

This is working fine, but our performance is poor. It's not so poor that it's obviously broken, but I'm looking for ways to improve it. I've been try to alloc one NSTimer that I reuse, and I've had no success doing so.

 How did you measure this? What value is 't' ?

I've tried

        timer = [NSTimer alloc];
[timer initWithFireDate:[NSDate date] interval:t target:self selector:@selector(mainLoopTimer:) userInfo:halTimer repeats:NO]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

Why are you discarding the result of initWithFireDate:? You could be talking to the completely wrong object here. You really should use the ObjC [[NSClass alloc] init] idiom here, everything is engineered towards that, and timer is not guaranteed to be valid after the init call, you're supposed to re-set it to whatever the init returned.



Cheers,
-- Uli Kusterer
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de





_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to