[問題] NSTimer

看板MacDev作者 (dryman)時間16年前 (2008/12/20 21:57), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
承上一問 我使用NSTimer能讓它動了 (跳下一個frame是使用glFlush()而不是[[self openGLContext] flushBuffer]) 這是我用的語法: @implementation GLview - (void) handleTimer: (NSTimer *) timer { rtri+=1; [self setNeedsDisplay:YES]; } - (void)drawRect:(NSRect)rect { ... glRotatef(rtri,1,0,0); //在這裡畫圖 glFlush(); timer = [NSTimer scheduledTimerWithTimeInterval: 0.000001 target: self selector: @selector(handleTimer:) userInfo: nil repeats: YES]; } 不過有一個奇怪的問題 就是它會愈轉愈慢,最後整個程式當掉...囧 官網上是用IBAction的方式來start timer 用法如下 - (IBAction)startOneOffTimer:sender { [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(targetMethod:) userInfo:[self userInfo] repeats:NO]; } 是要在什麼地方release timer嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.96.223

12/20 22:11, , 1F
自問自答:將repeats改成NO就不會愈跑愈慢了^ ^
12/20 22:11, 1F

12/20 22:39, , 2F
因為你draw多一次產生一個timer,timer越來越多就產生這
12/20 22:39, 2F

12/20 22:39, , 3F
種現象了.....
12/20 22:39, 3F

12/20 22:48, , 4F
把timer放在外面,然後在程式啟動的時候驅動一次就好了
12/20 22:48, 4F

12/20 22:48, , 5F
不過記得repeats要設成YES
12/20 22:48, 5F

12/21 00:19, , 6F
謝謝大家!
12/21 00:19, 6F
文章代碼(AID): #19JFctvO (MacDev)
文章代碼(AID): #19JFctvO (MacDev)