<p id="qitwt"></p>
      1. <object id="qitwt"><strong id="qitwt"></strong></object>
        <p id="qitwt"></p>
        <li id="qitwt"></li>
        <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
        <p id="qitwt"><label id="qitwt"></label></p>
      2. <acronym id="qitwt"></acronym>
        <p id="qitwt"></p>
        免費開源的iOS開發學習平臺

        iOS開發之網絡編程:10-常用網絡內部類之NSURLSession

        NSURLSession是蘋果在iOS7后為HTTP數據傳輸提供的一系列接口。NSURLConnection在iOS9被宣布棄用之后,蘋果推薦我們使用的NSURLSession。

        1、NSURLSession簡介

        • 創建NSURLSession有兩種方法:

        獲得共享的Session

        + (NSURLSession *)sharedSession;
        

        自定義Session

        + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(id <NSURLSessionDelegate>)delegate delegateQueue:(NSOperationQueue *)queue;
        
        • NSURLSessionConfiguration是session的配置信息類,它有三種類型:

        1.默認的配置會將緩存存儲在磁盤上

        + (NSURLSessionConfiguration *)defaultSessionConfiguration;
        

        2.瞬時會話模式不會創建持久性存儲的緩存

        + (NSURLSessionConfiguration *)ephemeralSessionConfiguration;
        

        3.后臺會話模式允許程序在后臺進行上傳下載工作

        + (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier;
        
        • 使用NSURLSession主要有兩個步驟:

          第一步:使用NSURLSession對象創建Task

          第二步:執行task

        2、關于task

        • task有三種類型

        NSURLSessionUploadTask:文件上傳時使用。

        NSURLSessionDownloadTask:文件下載時使用。

        NSURLSessionDataTask:dataTask完全可以勝任downloadTask和uploadTask的工作.它也是我們使用最多的task種類。

        • task的常見方法:

        讓當前的任務暫停

        - (void)suspend;
        

        不僅可以啟動任務,還可以喚醒suspend狀態的任務

        - (void)resume;
        

        可以取消當前的任務,你也可以向處于suspend狀態的任務發送cancel消息,任務如果被取消便不能再恢復到之前的狀態

        - (void)cancel;
        
        • 還分別有兩個代理協議NSURLSessionDownloadDelegate和NSURLSessionDataDelegate,它們繼承自NSURLSessionTaskDelegate,主要用來在接收數據過程中做進一步的處理。這里我們只做一個簡單介紹。

        NSURLSessionDataDelegate代理方法:

        1.接收到服務器的響應

        - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler;
        

        2.接收到服務器的數據(可能調用多次

        - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data;
        

        3.請求成功或者失?。ㄈ绻?,error有值)

        - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error;
        

        NSURLSessionDownloadDelegate代理方法:

        1.每次寫入調用(會調用多次)

        - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite;
        

        2.下載完成調用

        - (void)URLSession:(NSURLSession *)session
              downloadTask:(NSURLSessionDownloadTask *)downloadTask
              didFinishDownloadingToURL:(NSURL *)location;
        

        3.任務完成調用

        - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error;
        
        青青草国产成人久久_jizzjizz日本护士高清_亚洲 另类 国产 另类_99久久免费精品色老
        <p id="qitwt"></p>
          1. <object id="qitwt"><strong id="qitwt"></strong></object>
            <p id="qitwt"></p>
            <li id="qitwt"></li>
            <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
            <p id="qitwt"><label id="qitwt"></label></p>
          2. <acronym id="qitwt"></acronym>
            <p id="qitwt"></p>