我有一个每 5 分钟调用一次的后台方法。
该方法用于NSURLConnection
将数据发送到 Web 服务。
在那种方法中,我有这个代码:
...
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:NO];
NSPort* port = [NSPort port];
NSRunLoop* rl = [NSRunLoop currentRunLoop];
[rl addPort:port forMode:NSDefaultRunLoopMode];
[conn scheduleInRunLoop:rl forMode:NSDefaultRunLoopMode];
[conn start];
[rl run];
...
因为我在后台调用 WS,所以我使用此代码,因为没有此委托方法(didReceiveData、didFail ... 等)永远不会被调用。
我从http://www.cocoaintheshell.com/2011/04/nsurlconnection-synchronous-asynchronous/
得到
这个技巧问题是当 5 分钟过去了,这个方法第一次被调用它不等待下一个 5 分钟再次调用,但几乎每秒调用一次网络服务。
我认为我应该以某种方式使这个 NSRunLoop 无效,但不知道如何以及在哪里?