iOS開發之網路編程--2、NSURLSessionDownloadTask文件下載

来源:http://www.cnblogs.com/goodboy-heyang/archive/2016/02/17/5195806.html
-Advertisement-
Play Games

本文內容大綱: 1、回顧NSURLSessionTask 2、NSURLSessionDownloadTask大文件之block下載 3、NSURLSessionDownloadTask大文件之代理方法下載 4、NSURLSessionDownloadTask大文件之代理方法實現斷點續傳下載 前言:


 

本文內容大綱:

1、回顧NSURLSessionTask

2、NSURLSessionDownloadTask大文件之block下載

3、NSURLSessionDownloadTask大文件之代理方法下載

4、NSURLSessionDownloadTask大文件之代理方法實現斷點續傳下載

 

前言:如果讀者是第一次閱讀或者是學習關於本篇要介紹的NSURLSession的知識,最好先閱讀本人前篇《iOS開發之網路編程--1、NSURLSession的基本使用》然後再學習本篇比較好。

 

1、回顧NSURLSessionTask:

使用NSURLSession就需要用到NSURLSessionTask,所以關於Task的類和其子類的關係還是要瞭解的:

    

本篇講解的是大文件下載,既然是"下載",所以自然要用到的是NSURLSessionDownloadTask。

 

2、NSURLSessionDownloadTask大文件之block下載

測試的API介面:http://120.25.226.186:32812/resources/images/minion_08.png (因為Block的缺點,所以這裡用並不打的圖片文件作為測試)

  2-1、類、方法、屬性介紹:

    NSURLSession

      +(NSURLSession*)sharedSession;                        單例,直接創建會話session對象

      - (NSURLsessionDownloadTask*)downloadTaskWithURL:completionHandler:; 根據URL來創建會話的下載任務downloadTask,完成的話回調block

    NSURLsessionDownloadTas

      - (void)resume;                                啟動並執行任務

 

  2-2、源碼展示:

           

  2-3、缺點

      Block下載方式不適合大文件下載,因為該方法需要等到文件下載完畢了,才會回調completionHandler後面的block參數,然後才可以在這個block參數可以

    獲取location(文件下載緩存的路徑)、response(響應)、error(錯誤信息)。

      這樣的話,對於大文件,我們就無法實時的在下載過程中獲取文件的下載進度了。

 

3、NSURLSessionDownloadTask大文件之代理方法下載

測試的API介面:http://120.25.226.186:32812/resources/videos/minion_02.mp4  (這回用的是大文件哦,但也不會太大,本篇基礎練慣用,不會讓你下載都要花個好幾十分鐘以上的時間

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 查看效果:http://hovertree.com/code/javascript/pwl4bhoi.htm 代碼如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;
  • 這是一款基於jQuery和CSS3的登錄表單,登錄表單的界面整體呈現扁平化風格,非常簡潔和清新。當焦點在表單的輸入欄位上時,表單提示文字會出現一個小動畫,同時這款CSS3登錄表單的最大特點是其個性化的登錄按鈕,滑鼠滑過也有不錯的效果。 線上預覽 源碼下載 實現的代碼。 html代碼: <div cl
  • 1.0 作者:cloudgamer http://www.cnblogs.com/cloudgamer/archive/2010/04/01/ImageZoom.html
  • Web技術的發展速度太快了,如果你不與時俱進,就會被淘汰。因此,為了應對即將到來的HTML5,本文總結了22個HTML5的初級技巧,希望能對你進一步學習好HTML5會有所幫助。 1. 新的Doctype聲明 XHTML的聲明太長了,我相信很少會有前端開發人員能手寫出這個Doctype聲明。 1 <!
  • 1.不論滑鼠指針離開被選元素還是任何子元素,都會觸發 mouseout 事件。 2.只有在滑鼠指針離開被選元素時,才會觸發 mouseleave 事件。 <div class="sel_box"> <input type="button" value="請選擇所屬部門" id="sel_dept"
  • 一、首先需要明白的幾個概念 1、屏幕尺寸:也就是我們平常所說的某某手機幾寸屏。比如蘋果的4.7寸, 榮耀6的5.5寸。這裡說的寸是英寸(1 英寸 = 2.54 釐米)。 計算方法:屏幕尺寸=對角先尺寸(cm) / 2.54(cm) 一般用英寸表示。1英寸=2.54cm 2、解析度:屏幕上顯示的像素個
  • # built application files *.apk *.ap_ # files for the dex VM *.dex # Intellij project files .idea/ .gradle/ *.iml # Java class files *.class # Local c
  • Android的存儲系統(三) 回顧:前帖分析了Vold的main()函數和NetlinkManager的函數調用流程,截止到NetlinkHandler的創建和start()調用,本帖繼續分析源碼 1、處理block類型的uevent main()函數創建了CommandListener對象,Ne
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...