1

我正在研究 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;
}
4

1 回答 1

2

如果您想了解开发人员的计划,您应该在AFNetworking Github 问题页面上发布此问题,但在回答您的问题时,Apple 关于Migrating Away From ThreadsNSThread的建议是由编写代码复杂且操作队列和调度这一事实驱动的队列是编写多线程代码的一种更简单、更安全的方法。他们不是(至少在我的阅读中)说你不能使用NSThread,只是说通常有更简单的方法来做我们过去用线程做的事情。

底线,NSURLConnection在后台队列中使用需要小心。如果您只是从后台队列创建一个简单的、基于委托的连接,您会发现您的委托方法可能不会被调用。该AFNetworking技术是该问题的完全可接受的解决方案。

于 2013-04-26T20:40:30.733 回答