在我的viewDidLoad
方法中,我有以下内容:
- (void)viewDidLoad
{
[super viewDidLoad];
[self repeatRequest];
[NSTimer scheduledTimerWithTimeInterval:30.0 target: self selector: @selector(repeatRequest) userInfo: nil repeats: YES];
[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
以下是被调用的方法:
- (void) repeatRequest{
NSLog(@"backgroundRequest");
}
- (void) onTimer{
NSLog(@"flip pages");
}
事情是一切都运行良好2分钟,方法被调用为设置...但之后一切都误入歧途,onTimer
方法每秒钟调用一次,而不是五秒钟。 repeatrequest
被更频繁地调用它应该是。任何人都知道可能是哪个原因?
答案 0 :(得分:0)
你还没有真正给我们提供过多的信息,但是我猜想无论出于何种原因,你的viewDidLoad
方法被多次调用,导致许多重复的计时器不断调用你的{{1 }和repeatRequest
方法。
您可能想了解为什么onTimer
可能被多次调用。还要看看here。您应该假设允许多次调用viewDidLoad
。
(要检查此问题,只需将viewDidLoad
添加到NSLog(@"viewdidload");
方法中,然后查看调用此频率的频率。)
因此,你应该做的是将viewDidLoad
个实例存储为ivars(假设它们分别被称为NSTimer
和timer1
),然后检查它们是否已经存在{ {1}}被称为:
timer2
答案 1 :(得分:0)
听起来您可能正在创建这些计时器的多个实例,可能是因为您的视图实际上已多次加载。创建计时器以验证时,您可能会输出日志或断点。
您应该保留对在viewDidLoad中创建的计时器的引用,以便您可以在viewDidUnload中正确地使它们无效。