Ios NSTimer在指定的时间间隔后不调用选择器。网间网操作系统

Ios NSTimer在指定的时间间隔后不调用选择器。网间网操作系统,ios,nstimer,uipagecontrol,Ios,Nstimer,Uipagecontrol,我有一个横幅阵列,并显示在我的自定义单元格。当用户单击横幅时,我推送detailViewController并在应用程序浏览器中打开 我每5秒更换一次横幅。为此,我使用NSTimer来安排选择器调用。一切都很好。。。。直到,用户单击横幅并从detailViewController返回。当用户返回时,NSTimer的行为非常怪异。它在指定的5秒后更改第一个横幅,然后在1秒后更改下一个横幅,依此类推 她是我正在使用的代码: #pragma mark - User Methods -(void) re

我有一个横幅阵列,并显示在我的自定义单元格。当用户单击横幅时,我推送detailViewController并在应用程序浏览器中打开

我每5秒更换一次横幅。为此,我使用NSTimer来安排选择器调用。一切都很好。。。。直到,用户单击横幅并从detailViewController返回。当用户返回时,NSTimer的行为非常怪异。它在指定的5秒后更改第一个横幅,然后在1秒后更改下一个横幅,依此类推

她是我正在使用的代码:

#pragma mark - User Methods
-(void) resetBannerRotationTimer {
    [self.bannerTimer invalidate];
    self.bannerTimer = nil;
    self.timeInterval = 5.0f;
    self.bannerTimer = [NSTimer scheduledTimerWithTimeInterval:self.timeInterval target:self selector:@selector(rotateBanner) userInfo:nil repeats:YES];
    self.timeInterval = self.bannerTimer.timeInterval;

    [[NSRunLoop currentRunLoop] addTimer:self.bannerTimer forMode:NSRunLoopCommonModes];

}
rotateBanner:

在我的updateBanner方法中,我使用UIPageControl来更改页面。我不认为该代码需要发布


我正在调用ViewWillAspect方法中的resetBannerRotationTimer方法。

我认为您没有启动计时器

在计时器调度之后添加此行

[self.bannerTimer fire];

您的resetBannerRotationTimer被调用了多少次?我认为你应该使用scheduledTimerWithtimeInterval。然后,您不需要向runLoop添加计时器。代码看起来很好。在resetBannerRotationTimer方法中保留一个断点。查看计时器对象是否有效。在调试器窗口中,使用po[nsrunlop currentLoop]打印内容并验证计时器对象的属性。看看是否有什么问题。我已经尝试了scheduledTimerWithtimeInterval,它在5秒后更改横幅,然后是3秒。不过,时间间隔是5秒。我也更新了resetBannerRotationTimer方法。发现问题了。当用户单击横幅时,我的计时器没有失效。这不应该造成问题,但仍然是。我在点击时将计时器设置为零,并且它可以工作。我正在使用[nsrunlop currentRunLoop],因此不必显式启动计时器。如果这就是问题所在,那么我的选择器将永远不会调用。
[self.bannerTimer fire];