On Sat, Jun 28, 2008 at 8:29 AM, Shawn Erickson <[EMAIL PROTECTED]> wrote: > On Sat, Jun 28, 2008 at 8:13 AM, Daniel Richman > <[EMAIL PROTECTED]> wrote: >> Thanks very much for this detailed explanation. I realize my mistake now; I >> was thinking about this in the wrong way. I eventually coded it as follows: >> >> - (IBAction)startTimer:(id)sender >> { timeInSeconds = [((NSNumber *)[inTextField objectValue]) intValue]; >> [NSTimer scheduledTimerWithTimeInterval:1.0 >> target:self >> selector:@selector(checkTimer:) >> userInfo:nil >> repeats:YES]; >> } >> >> >> - (void)checkTimer:(NSTimer *)timer >> { >> if (timeInSeconds == 0) { >> [timer invalidate]; >> [outTextField setStringValue:@"Finished timing"]; >> } else { >> [outTextField setStringValue:[NSString stringWithFormat:@"%d more >> second(s) to go", timeInSeconds]]; >> NSLog(@"in loop, timeInSeconds is %d", timeInSeconds); >> timeInSeconds--; >> } >> } > > You really shouldn't use an NSTimer to count time as you are doing > above. For example your timer can be delayed from firing because of > other work taking place on the main thread. Over a long enough period > of time (use enters a larger value for seconds) these small delays can > build up and cause you to miscount time when compared to wall clock > time. > > You should instead use something like NSDate. For example create an > NSDate instance for the finish time (consider +[NSDate > dateWithTimeIntervalSinceNow:]) in you action method and then in your > check timer method look at that date to see if you have passed it to > know if you are done. Also you would use current time and finish time > to calculate how many seconds remand. You get current time using > -[NSDate date]. > > You could also consider two timers... one firing often to cause you to > update the UI and the other firing once at the finish time.
Ah found it... http://lists.apple.com/archives/cocoa-dev/2006/Nov/msg00447.html ...and you can count using a timer if you use a constant time based (see my email related to the linked email thread)... http://lists.apple.com/archives/cocoa-dev/2006/Nov/msg00494.html -Shawn _______________________________________________ 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]