2013-04-26 2 views
1

Я изучаю AFNetworking и заметил, что он создает собственный NSThread. Насколько я знаю, яблоко отвлекает использование NSThread. Является ли это приемлемой практикой для создания AFNetworking собственного 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; 
} 

ответ

2

Вы должны опубликовать этот вопрос на AFNetworking Github Issues page, если вы хотите взглянуть на планы разработчиков, но в ответ на ваш вопрос, адвокат компании Apple о Migrating Away From Threads обусловлен тем фактом, что написание NSThread кода является сложным, а очереди операций и очереди отправки - намного проще и безопаснее писать многопоточный код. Они не (по крайней мере, в моем чтении) говорят, что вы не можете использовать NSThread, просто, как правило, гораздо проще использовать то, что мы использовали для потоков.

Нижняя линия, используя NSURLConnection в фоновых очередях, требует осторожности. Если вы просто создаете простое, делегированное соединение из фоновой очереди, вы обнаружите, что ваши методы делегатов не могут быть вызваны. Техника AFNetworking является вполне приемлемым решением этой проблемы.