0

我有一个方法 -(void)showLyrics{} 我想从另一个方法调用它,但是在一定时间之后,每次连续调用之间的时间调用是不同的。我正在这样做

[self performSelector:@selector(showLyrics) withObject:nil afterDelay:2];

[self performSelector:@selector(showLyrics) withObject:nil afterDelay:5];

[self performSelector:@selector(showLyrics) withObject:nil afterDelay:10];

[self performSelector:@selector(showLyrics) withObject:nil afterDelay:12];

有没有人知道更好的方法?

4

3 回答 3

1

调用一次

-(void)viewDidLoad {
    [self performSelector:@selector(showLyrics) withObject:nil afterDelay:2];
}

做你的事,然后安排下一个

-(void)showLyrics {
    int d=2;
    //do your thing
    d+=3;//or whatever
    [self performSelector:@selector(showLyrics) withObject:nil afterDelay:d];

}

于 2012-11-01T07:27:30.820 回答
0

您可以根据需要使用 NSTimer。您需要添加设置计时器的逻辑。将时间作为参数传递给 NSTimer 并根据需要执行该方法。

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:<accumSecs>
    target:self selector:@selector(showLyrics) 
    userInfo:nil repeats:NO];

有关 NSTimer 类的更多信息:NSTimer Apple Docs Ref

希望它对你有用。

于 2012-11-01T07:27:36.937 回答
0

我能想到的另一种方法是,您可以创建一个每秒调用一次的计时器函数,然后您可以获取一个全局变量,您可以在每次调用时增加其值,然后使用 switch 语句,您可以做出决定

于 2012-11-01T08:18:42.913 回答