延迟后执行选择器只调用一次

use*_*539 4 xcode objective-c viewdidload ios performselector

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

[self performSelector:@selector(getMatchListWS) withObject:nil afterDelay:1.0];
Run Code Online (Sandbox Code Playgroud)

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

Rui*_*res 11

它会是这样的:

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(getMatchListWS:) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)

把它放在你的viewDidLoad,所以你没有遇到多个事件被触发的问题.如果你把它打开,viewWillAppear或者viewDidAppear你正在推动或显示modalViewController ,就会发生这种情况.

  • 如果你想**只重复一次**,它重复**:NO**.从文档:`重复如果是,计时器将重复安排自己,直到无效.如果否,则计时器在发生后将失效 (4认同)

Mad*_*nRP 7

Jacky Boy的回答将完成你的工作.另一种解决方案(如果您热衷于使用performSelector方法)将在方法定义中添加相同的行,如此

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

[self performSelector:@selector(getMatchListWS) withObject:nil afterDelay:1.0];
}
Run Code Online (Sandbox Code Playgroud)

注意:在加载视图时,您仍应该调用该方法一次.