1

我不想每 45 秒调用一次我的网络服务。实际上我想要做的是,如果用户播放歌曲,用户开始在我的应用程序中播放一些音乐,每 45 秒应用程序应该同样向 Web 服务发送一个调用,说“用户正在播放歌曲”。我对 iOS 线程一无所知。那么有人能告诉我我该怎么做吗?我需要做线程还是有其他方法可以做到这一点?

谢谢

4

2 回答 2

2

这里有一些代码可以帮助你。

设置一个NSTimer地方,比如 in viewDidLoad,每 45 秒运行一次,执行你的 web 服务调用:

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

然后实现计时器中使用的选择器,在后台运行一些代码,如你所愿:

-(void)callService
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

       //Code in this part is run on a background thread, call your service here

   });
}
于 2013-09-05T03:55:31.527 回答
1

您需要在后台线程上执行此操作。所以它不会影响用户界面。用户可以执行任何其他操作。为此,您可能需要使用NSTimerand performSelectorInBackground: withObject:。使用NSTimer你可以重复调用一个方法。从中调用后台的 Web 服务方法。GCD也是更好的选择。

于 2013-09-05T03:43:39.947 回答