NSURLSession對(duì)代理的強(qiáng)引用

  • 一般來說,在ARC下修飾delegate要用weak而不是strong

用tableview的代理(viewcontroller)例子來解釋:
如果tableview用strong強(qiáng)引用了其代理viewcontroller焚刺,viewcontroller又strong強(qiáng)引用了tableview匪蝙,就造成了循環(huán)引用主籍,誰都不能被釋放,會(huì)造成內(nèi)存泄漏逛球。用weak使tableview弱引用viewcontroller千元,不會(huì)造成循環(huán)引用。

  • 而對(duì)于NSURLSession來說卻比較特殊颤绕,下面是蘋果API里面的說明
    The session object keeps a strong reference to the delegate until your app exits or explicitly invalidates the session. If you do not invalidate the session by calling the invalidateAndCancel or finishTasksAndInvalidatemethod, your app leaks memory until it exits.

可以看出NSURLSession對(duì)代理是強(qiáng)引用幸海,如果不正確處理的的話,就會(huì)造成內(nèi)存泄漏奥务。

那么我們?cè)趺醋霾拍芊乐箖?nèi)存泄漏的發(fā)生呢物独,蘋果給我們提供了兩個(gè)方法,invalidateAndCancel or finishTasksAndInvalidate

  1. 一個(gè)是完成任務(wù)后將session給干掉氯葬,在NSURLSessionDownloadDelegate 代理方法中
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{
    NSLog(@"完成 %@",location);
    //完成任務(wù),
    [self.session finishTasksAndInvalidate];
    //清空Session
    self.session = nil;  
}
  1. 一個(gè)是在控制器返回時(shí)挡篓,任務(wù)不再下載了
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    //取消會(huì)話
    [self.session invalidateAndCancel];
    self.session = nil;
}

怎么做看自己的選擇了,蘋果這樣做也是有原因的

  • 在我們平常的網(wǎng)絡(luò)開發(fā)中,網(wǎng)絡(luò)訪問操作,封裝到一個(gè)方法中,由一個(gè)統(tǒng)一的單例對(duì)象來負(fù)責(zé)所有的網(wǎng)絡(luò)事件帚称,比如常用的AFN
  • Session對(duì)代理(單例)進(jìn)行強(qiáng)引用,單例本身就是一個(gè)靜態(tài)的實(shí)例,本身就不需要釋放
補(bǔ)充
  1. 下載的文件在哪里
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{
    NSLog(@"完成 %@",location);
}

如果在回調(diào)方法中,不做任何處理,下載的文件會(huì)被刪除
通過location找到文件夾位置官研,運(yùn)行程序的時(shí)候可以看到下載文件其實(shí)是放在temp里面的,但下載完后系統(tǒng)會(huì)自動(dòng)回收這塊區(qū)域。

*設(shè)計(jì)的目的是什么?

 - 通常從網(wǎng)絡(luò)上下載文件,zip 文件最多,替用戶節(jié)約流量
 - 如果是 zip 包,下載之后,需要解壓
 - 解壓之后,原始的 zip 文件就不需要了,系統(tǒng)會(huì)自動(dòng)幫我們刪除
  1. dataTask 和 downloadTask 下載對(duì)比
  • NSURLSessionDataTask
    下載文件可以實(shí)現(xiàn)離線斷點(diǎn)下載闯睹,但是代碼相對(duì)復(fù)雜
  • NSURLSessionDownloadTask
    下載文件可以實(shí)現(xiàn)斷點(diǎn)下載戏羽,但不能離線斷點(diǎn)下載
    內(nèi)部已經(jīng)完成了邊接收數(shù)據(jù)邊寫入沙盒的操作
    解決了下載大文件時(shí)的內(nèi)存飆升問題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市楼吃,隨后出現(xiàn)的幾起案子始花,更是在濱河造成了極大的恐慌,老刑警劉巖所刀,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衙荐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡浮创,警方通過查閱死者的電腦和手機(jī)忧吟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斩披,“玉大人溜族,你說我怎么就攤上這事讹俊。” “怎么了煌抒?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵仍劈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我寡壮,道長(zhǎng)贩疙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任况既,我火速辦了婚禮这溅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棒仍。我一直安慰自己悲靴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布莫其。 她就那樣靜靜地躺著癞尚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乱陡。 梳的紋絲不亂的頭發(fā)上浇揩,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音蛋褥,去河邊找鬼临燃。 笑死睛驳,一個(gè)胖子當(dāng)著我的面吹牛烙心,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乏沸,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼淫茵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蹬跃?” 一聲冷哼從身側(cè)響起匙瘪,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝶缀,沒想到半個(gè)月后丹喻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翁都,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年碍论,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柄慰。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳍悠,死狀恐怖税娜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情藏研,我是刑警寧澤敬矩,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站蠢挡,受9級(jí)特大地震影響弧岳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜业踏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一缩筛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堡称,春花似錦瞎抛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晓殊,卻和暖如春断凶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巫俺。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國打工认烁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人介汹。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓却嗡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親嘹承。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窗价,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • qNSURLSession系列筆記:NSURLSession筆記 上傳文件 使用NSURLSession下載文件 ...
    WeiHing閱讀 3,523評(píng)論 3 9
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,160評(píng)論 30 470
  • 君本竹馬郎撼港,奈何門不當(dāng)。 難為父母命骤竹,唯有淚千行帝牡! --灰子,作于二零一七年十二月五日
    灰常出色閱讀 144評(píng)論 0 2
  • 作為一只在法國工作的程序猿蒙揣,大黃的身邊總是充斥著各種法國人地道的口語靶溜,et voilà 就是其中之一。當(dāng)別人向你或...
    Sophia大黃閱讀 978評(píng)論 2 1
  • 晚安惩阶,陌生人 何韶寧 今夜,我們共同歌唱 情似朝露過于短暫 只恨時(shí)光太過匆匆 今夜扣汪,我們插上詩的翅膀 在夢(mèng)里飛翔 ...
    何少n閱讀 543評(píng)論 0 0