我正在研究 AFNetworking 并注意到它创建了自己的 NSThread。据我所知,苹果现在不鼓励使用 NSThread。这是 AFNetworking 创建自己的 NSThread 的可接受做法吗?这会在未来的版本中改变吗?
谢谢
+ (NSThread *)networkRequestThread {
static NSThread *_networkRequestThread = nil;
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil];
[_networkRequestThread start];
});
return _networkRequestThread;
}
最佳答案
您应该在 AFNetworking Github Issues page 上发布此问题如果你想深入了解开发者的计划,但在回答你的问题时,Apple 的顾问关于 Migrating Away From Threads是因为编写 NSThread
代码很复杂,而操作队列和调度队列是编写多线程代码的一种更简单、更安全的方法。他们并不是(至少在我看来)说你不能使用 NSThread
,只是说通常有更简单的方法来完成我们过去使用线程所做的事情。
底线,使用 NSURLConnection
在后台队列中需要小心。如果您只是从后台队列创建一个简单的、基于委托(delegate)的连接,您会发现您的委托(delegate)方法可能不会被调用。 AFNetworking
技术是解决此问题的完全可接受的解决方案。
关于ios - AFNetworking NS线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243990/