Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Разница между синхронным и асинхронным в последних версиях iOS

Автор вопроса: Darius MiliauskasОтветов: 1

Раньше в iOS было два типа запросов: sendSynchronousRequest и sendAsynchronousRequest. Однако оба они устарели в iOS9. Рекомендуемая замена для обоих случаев: 1 и 2 почти такой же:

[[NSURLSession sharedSession] dataTaskWithRequest:request
                                completionHandler:^(NSData *data,
                                        NSURLResponse *response,
                                        NSError *error) {
    //A piece of code after response completes.
}] resume];

Итак, в недавней iOS больше нет разницы между этими двумя? Почему было принято такое решение?

  • NSURLConnection устарел, и эти методы были частью этого класса. Rajan Maheshwari 22.11.2015
  • взгляните на этот stackoverflow.com/questions/24114093/ Rajan Maheshwari 22.11.2015
  • Спасибо, Раджан, я вижу, что это устарело, ваш ответ полезен, но я также хочу увидеть эти изменения с синхронной и асинхронной точек зрения, поэтому я задал вопрос как таковой. Darius Miliauskas 22.11.2015

iosrequestasynchronoussynchronous

Ответы

Ответ 1 · рейтинг 1 · Rob

Как правило, когда Apple пересматривает/обновляет API-интерфейсы, они отказываются от синхронных методов, которые потенциально могут блокировать поток, и вводят только асинхронные представления. И, где это возможно, эти новые асинхронные методы также можно отменить. Эти два NSURLConnection удобных метода заслуживают того, чтобы их удалили.

Хотя я не припоминаю, чтобы Apple явно сформулировала эту стратегию, можно сделать логический вывод об этом из эволюции многих их фреймворков (NSURLSession, фреймворк Contacts, фреймворк Photos и т. д.). Я уверен, что они делают это, потому что синхронные API-интерфейсы настолько восприимчивы к неправильному использованию, что почти провоцируют плохие шаблоны программирования (в частности, блокировку основного потока).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы