在obj-c(幻灯片)中管理几个不能互相干扰的定时器的算法是什么?

时间:2013-02-23 23:06:00

标签: objective-c architecture timer core-animation slideshow

我正在创建一个可以幻灯片播放多个视图,照片和类似内容的应用。如果用户没有做任何事情,那么它会每隔几秒更改一次视图。如果用户滑动,则幻灯片必须停止,并让他手动导航。

在后台,应用会检查新内容。如果有新内容可用,它必须向用户显示最新的视图(如果没有做任何事情)。

该应用程序全屏显示视图。如果用户点击视图,则会显示导航栏,以便他们更改设置。如果他们暂时不做任何操作,则幻灯片重新开始,导航栏将隐藏。

到目前为止,有3个计时器。现在,我想知道是否存在一种优雅的方式使它们不会相互干扰。

如果用户正在探索设置(在他离开之前)移动幻灯片显示不正确,在手动浏览每个视图时也不能打断他。

1 个答案:

答案 0 :(得分:0)

只需创建3个计时器并根据您的算法进行管理。

@property (nonatomic, strong) NSTimer *slideshowTimer;
@property (nonatomic, strong) NSTimer *networkUpdatesTimer;
@property (nonatomic, strong) NSTimer *idleTimer;

在正确的时刻安排并以这种方式取消计算每个计时器,

时间表:

self.slideshowTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(slideshowTimerFired:) repeats:NO];

实现你传递给计时器初始化方法的选择器。

取消调度:

[self.slideshowTimer invalidate];

正如您所看到的,每个特定的计时器都有一个选择性的选择器。 并且要小心,因为NSTimer保留它自己的目标,直到它失效(未计划)。