Можем ли мы установить собственный объект делегата для NSURLSessionTaskDelegate?

В NSURLSession мы добавляем задачи в сеанс такими методами, как

  • dataTaskWithRequest:
  • dataTaskWithRequest: завершение обработчика:

Насколько я понимаю, если мы используем тот, у которого нет завершенияHandler, или используем nil для завершенияHandler, self будет использоваться автоматически в качестве делегата, и мы можем ожидать, что будут вызываться методы делегата. Я правильно понимаю?

Можно ли указать другого делегата (кроме self ) для каждой задачи?

Я проверил sessionWithConfiguration:delegate:delegateQueue и думаю, что этот делегат является NSURLSessionDelegate.


person jqyao    schedule 17.06.2014    source источник
comment
При дальнейшем изучении кажется, что sessionWithConfiguration:delegate:delegateQueue — это способ установить делегата для всех протоколов, включая NSURLSessionDelegate, NSURLSessionTaskDelegate, NSURLSessionDownloadDelegate и NSURLSessionDataDelegate.   -  person jqyao    schedule 17.06.2014


Ответы (1)


Ответьте на мой собственный вопрос. На самом деле мы можем использовать sessionWithConfiguration:delegate:delegateQueue для настройки делегата. Согласно Руководство по программированию системы загрузки URL-адресов Apple,

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

person jqyao    schedule 18.06.2014