2016-12-05 107 views
0

我陷入了一个有趣的问题,因为我想在3秒后执行一个方法,但也想检查我是否得到了该方法的响应。响应后执行方法

如果我没有在3秒内得到响应,那么该方法将不会执行。

使用代码:

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

这将运行receiveMessageWebservice 3秒的时间间隔的。但问题是有些时候,响应不是在3秒钟,它需要更多的时间,然后我有两个或三个响应同时。

我不希望如此。

请帮忙。

+0

在响应中设置一个BOOL值,当响应发生变化时,根据bool值调用receiveMessageWebservice方法。 –

+0

okk,但事情是这种方法将在间隔3秒后被调用。当响应不会使计时器失效时,该如何做到这一点 –

+0

。 –

回答

0

当您请求Web服务时,只需使计时器失效并在响应成功/失败块中重新创建该计时器即可。

这样就可以顺利运行的每个固定时间间隔后的服务请求,而不要求多次

0

当然,网络电话不能保证时间。正如我所假设的那样,你想重新尝试一个回应,直到它不会到达你的身边。

因为我觉得你不应该在这里使用计时器,而是依靠Web服务完成和失败块来重新启动重新获取Web服务。如果响应失败,则只能重试。