Objective-C iPhone NSTimer唯一标识符

3

我有一个关于NSTimer的问题,我在.h文件中声明了它,然后在方法中设置了它。但是这个方法会被多次调用,所以NSTimer会在相同的名称下运行多次。

现在我的问题是,是否可以设置标记/ID或其他内容,以便我可以使用正确的标记/ID使NSTimer失效?

谢谢帮助!

4个回答

4

这个问题很久以前就被问过了,但由于今天我有同样的需求,所以这是我的解决方案:

// set timer
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                         target:self
                                       selector:@selector(whateverMethod)
                                       userInfo:@"timer1"
                                        repeats:YES];

如果想使定时器失效,请检查其userInfo字符串:

// invalidate timer
if ([[timer userInfo] isEqual:@"timer1"])
    [timer invalidate];

当返回到视图控制器时,[timer userInfo]返回nil值。 - Monika Patel

2
如果您正在创建多个NSTimer,并且希望独立处理它们,则需要独立存储它们。如果数量固定,只需创建足够的变量并适当命名即可。或者将它们放在数组中(然后由索引键控)。或者将它们放在字典中,以某些字符串名称为键。请注意,计时器具有一些敏感的内存处理要求。如果您需要更广泛的设计帮助,请编辑您的问题并提供更多细节。

1

你只需要保存一个对已创建并正在运行的NSTimer的引用,并使用这个引用即可。


1
好的,我现在有以下代码。但是有没有办法设置一个唯一的ID/标签,以便稍后可以使计时器失效。这是因为计时器方法将被多次调用。(它是用于动画图像/按钮)

MainViewController.m

- (void)timerMethod {

     NSTimer *daTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(animations:) userInfo:nil repeats:YES];

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接