Ily*_*ski 22 iphone cocoa-touch timer
我有一个计时器,viewWillAppear在调用方法时触发,并在调用viewDidDisappear方法时无效.但是在视图之间进行一定量的切换之后,计时器即使在无效之后也会继续触发.有什么问题?
这是我的代码:
NSTimer *timer;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
timer = [NSTimer scheduledTimerWithTimeInterval: 0.2f
target: self
selector:@selector( timerAction )
userInfo:nil
repeats:YES];
}
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[timer invalidate];
timer = nil;
}
-(void) timerAction
{
NSLog(@"timerAction");
}
Run Code Online (Sandbox Code Playgroud)
Ily*_*ski 38
我应该通过保留它来保持与计时器的链接.:) 5个月前我问过这个问题,这太棒了,我获得了多少经验.:)
timer = [ [NSTimer scheduledTimerWithTimeInterval: ...] retain];
...
...
[timer invalidate];
[timer release];
Run Code Online (Sandbox Code Playgroud)
Mon*_*ona 14
这是绝对的解决方案.以上都没有为我工作,所以我这样做了,
你想在哪里启动计时器,
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerMethod) userInfo:nil repeats:NO];
Run Code Online (Sandbox Code Playgroud)
计时器调用的方法,
-(void)timerMethod
{
// do what you need to do
if (needs to be called again) {
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerMethod) userInfo:nil repeats:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助,
定时器调用的方法应具有定义
- (void)methodName:(NSTimer *)aTimer;
Run Code Online (Sandbox Code Playgroud)
这样,该方法具有触发的计时器实例.你这样做的方法,该方法将不知道计时器是否无效.
尝试将计时器初始化更改为
timer = [NSTimer scheduledTimerWithTimeInterval: 0.2f target: self selector:@selector(timerAction:) userInfo:nil repeats:YES]
Run Code Online (Sandbox Code Playgroud)
和方法
-(void) timerAction:(NSTimer *)aTimer{...}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助
| 归档时间: |
|
| 查看次数: |
24614 次 |
| 最近记录: |