做iOS已经有一段时间了,但是现在我在一个复杂的客户机服务器应用程序中工作,它要求我:
对于iOS中的线程来说,什么是最好的方法:?我一直在使用dispatch_asynch +执行者:onThread:withObject,但是它给我带来了各种各样的问题!
问题是:在内部使用NSOpertation的AFHttpRequestOperation子类中实现暂停、取消、等待/睡眠的最佳方法/方法是什么?
我是一个线程新手,特别是在iOS下,所以你的帮助非常感谢!
发布于 2014-05-30 16:49:02
我建议不要使用线程与网络。虽然看起来还不够清楚,但实现异步网络请求所需的CPU时间非常少。
许多人尝试这样做,最后得到异步网络调用的委托方法而不被调用。如果在后台线程上执行网络调用,则该线程可能会在委托调用结束之前退出。
只需调用cancel/pause方法就可以取消异步调用。
如果您觉得主线程非常慢,请确保避免对其进行繁重的操作,比如解析、调用CameraView。
我使用NSrunLoop只是测试如何做到这一点,没有太多的优点。
-(void)start
{
[self willChangeValueForKey:@"isExecuting"];
_isExecuting = YES;
[self didChangeValueForKey:@"isExecuting"];
NSURL* url = [[NSURL alloc] initWithString:@"http:your url"];
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; // ivar
[request release];
[url release];
// Via the run loop
NSPort* port = [NSPort port];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
[runLoop addPort:port forMode:NSDefaultRunLoopMode];
[connection scheduleInRunLoop: runLoop forMode:NSDefaultRunLoopMode];
[connection start];
[runLoop run];
}您可以将本机api替换为库api。希望这能有所帮助。
https://stackoverflow.com/questions/23957302
复制相似问题