2014-06-17 71 views
1

在NSURLSession,我們通過以下方法添加任務到會話像我們可以設置自定義委託對象NSURLSessionTaskDelegate

  • dataTaskWithRequest:
  • dataTaskWithRequest:completionHandler:

據我瞭解,如果我們使用沒有completionHandler的函數或者使用nil作爲completionHandler,self將被自動用作委託,我們可以期待調用委託方法。我理解正確嗎?

是否有可能爲每個任務指定不同的委託(除自我)?

我檢查了sessionWithConfiguration:delegate:delegateQueue,我認爲委託是一個NSURLSessionDelegate。

+1

隨着越來越多的調查,似乎sessionWithConfiguration:委託:delegateQueue是爲所有協議,包括NSURLSessionDelegate,NSURLSessionTaskDelegate,NSURLSessionDownloadDelegate和NSURLSessionDataDelegate委託方式 – jqyao

回答

2

回答我自己的問題。我們實際上可以使用sessionWithConfiguration:delegate:delegateQueue來設置委託。據apple's URL Loading System Programming Guide

,如果你需要處理在非默認 方式驗證或緩存,您必須提供符合會話 委託協議,一個或多個任務委託協議,或部分委託 的組合這些協議。此委託一舉多得