標籤:ide head code cancel comment handler file 應該 即時
(1)關於NSOutputStream的使用
//1. 建立一個輸入資料流,資料追加到檔案的屁股上 //把資料寫入到指定的檔案地址,如果當前檔案不存在,則會自動建立 NSOutputStream *stream = [[NSOutputStream alloc]initWithURL:[NSURL fileURLWithPath:[self fullPath]] append:YES]; //2. 開啟流 [stream open]; //3. 寫入流資料 [stream write:data.bytes maxLength:data.length]; //4.當不需要的時候應該關閉流 [stream close];
(2)關於網路請求要求標頭的設定(可以佈建要求下載檔案的某一部分)
//1. 佈建要求對象 //1.1 建立請求路徑 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_01.mp4"]; //1.2 建立可變請求對象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //1.3 拿到當前檔案的殘留資料大小 self.currentContentLength = [self FileSize]; //1.4 告訴伺服器從哪個地方開始下載檔案資料 NSString *range = [NSString stringWithFormat:@"bytes=%zd-",self.currentContentLength]; NSLog(@"%@",range); //1.5 佈建要求頭 [request setValue:range forHTTPHeaderField:@"Range"];
(3)NSURLSession對象的釋放
-(void)dealloc{ //在最後的時候應該把session釋放,以免造成記憶體泄露 // NSURLSession設定過代理後,需要在最後(比如控制器銷毀的時候)調用session的invalidateAndCancel或者resetWithCompletionHandler,才不會有記憶體泄露 // [self.session invalidateAndCancel]; [self.session resetWithCompletionHandler:^{ NSLog(@"釋放---"); }];}
(4)最佳化部分
01 關於檔案下載進度的即時更新 02 方法的獨立與抽取
使用NSURLSessionDataTask實現大檔案離線斷點下載(完整)