4

我有一个应用程序,我需要每隔 1 或 2 秒调用一次实例方法。现在如果我放置

[self performSelector:@selector(getMatchListWS) withObject:nil afterDelay:1.0];

在 viewDidLoad: 或 viewWillAppear: 中,方法 getMatchListWS 仅在视图出现或加载时调用一次。但是即使用户在该视图上而视图没有消失或卸载,我也需要连续调用该方法。那么,什么是正确的位置或委托方法,我可以在其中添加 performSelector 方法,以便每秒调用一次,而不必一次又一次地卸载视图。我需要在后台或主线程上做些什么吗?提前致谢!!

4

3 回答 3

11

它会是这样的:

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(getMatchListWS:) userInfo:nil repeats:YES];

把它放在你的 中viewDidLoad,这样你就不会遇到多个事件被触发的问题。如果您将它放在viewWillAppearor上viewDidAppear,并且您正在推送或显示 modalViewController,则可能会发生这种情况。

于 2013-04-22T08:17:13.060 回答
7

Jacky Boy 的回答会让你完成工作。另一种解决方案(如果您热衷于使用performSelector方法)是在您的方法定义中添加相同的行,如下所示

-(void) getMatchListWS {
//Get Match List here

[self performSelector:@selector(getMatchListWS) withObject:nil afterDelay:1.0];
}

注意:当视图加载时,您仍然应该调用一次该方法。

于 2013-04-22T08:27:41.207 回答
2

您只是在延迟通话。这样做是在延迟 1 秒后调用您的方法。您需要做的是设置计时器以在特定时间间隔后重复调用您的方法。

//create an instance of NSTimer class
NSTimer *timer;

//set the timer to perform selector (getMatchListWS:) repeatedly
timer= [NSTimer timerWithTimeInterval:1.0
                                        target:self
                                        selector:@selector(getMatchListWS:)
                                        userInfo:nil
                                        repeats:YES];
于 2013-04-22T08:27:50.857 回答