精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS - NSTimer循環引用的解決辦法

移動開發 iOS
NSTimer 我之前沒遇到過循環引用的問題,因為我一直都是配對使用,在 viewWillAppear 開啟,在 viewWillDisappear 關閉,不關閉的話那么多 timer 掛載在 runloop 上感覺挺影響性能和流暢性的,就像管理內存一樣,申請和釋放配對使用,就不會泄露了,誰申請誰釋放的原則。但是很大的團隊的話,別人可能會寫錯,造成泄露,可以從技術上,團隊編程規范上解決他。

發生場景

在 Controller B 中有一個 NSTimer

  1. @property (strong, nonatomic) NSTimer *timer; 

你創建了它,并掛載到 main runloop

  1. self.timer = [NSTimer scheduledTimerWithTimeInterval:1  
  2. target:self selector:@selector(timerAction:) userInfo:nil repeats:true]; 

 

然后退出 Controller B 的時候,忘記關掉 timer 了

Controller B 將不會釋放,B 與 timer 循環引用。因為創建 timer 的時候把 self 直接寫進去了。

方法一

既然不能直接傳 self,那傳 weakSelf 試試

  1. __weak typeof(self) weakSelf = self; 
  2.   
  3. self.timer = [NSTimer scheduledTimerWithTimeInterval:1  
  4. target:weakSelf selector:@selector(timerAction:) userInfo:nil repeats:true]; 

 

測試結果還是發生了循環引用,B 沒有釋放,timer 對 weakSelf 這個變量是強引用的,timer -> weakSelf -> B -> timer,三者之間形成循環引用。

方法二

設置一個包裝類,包著 Controller B 放進 timer 中,像這樣

 

 

 

 

我認為 Controller B 有幾 MB 那么大,泄露了很浪費內存。

WeakWrap 只有幾百個字節那么小,泄露了也沒關系。

WeakWrap 中對 Controller B 弱引用,WeakWrap 包著 Controller B,傳進 timer 中,就算忘記關 timer,也只是泄露了 WeakWrap 和 timer。

理論上還是有內存泄露,只不過比較少,如果一個 Controller 是頻繁進出的,進出一次,丟失一個,如果有幾十個泄露的 timer 掛在 main runloop 上會影響性能和流暢性,你想幾十個 timer 一起 fire,又調用了 timer 事件響應方法,開銷還是挺大的。

方法三

NSTimer 已知是會強引用參數 target:self 的了,如果忘記關 timer 的話,傳什么進去都會被強引用。干脆實現一個 timer 算了,timer 的功能就是定時調某個方法,NSTimer 的調用時間是不精確的!它掛在 runloop 上受線程切換,上一個事件執行時間的影響。

利用 dispatch_asyn() 定時執行函數。看下面代碼。

  1. - (void)loop { 
  2.     [self doSomething]; 
  3.     ...... 
  4.     // 休息 time 秒,再調 loop,實現定時調用 
  5.     [NSThread sleepForTimeInterval:time]; 
  6.     dispatch_async(self.runQueue, ^{ 
  7.         [weakSelf loop]; 
  8.     });     

 

dispatch_async 中調 loop 不會產生遞歸調用

dispatch_async 是在隊列中添加一個任務,由 GCD 去回調 [weakSelf loop]

這辦法解決了timer 不能釋放,掛在 runloop 不能移除的問題。

利用這方法,我寫了個不會發生循環引用的 timer,controller 釋放,timer 也自動停止釋放,甚至 timer 的 block 里面可以直接寫 self,也不會循環引用。github下載地址

方法四

NSTimer 我之前沒遇到過循環引用的問題,因為我一直都是配對使用,在 viewWillAppear 開啟,在 viewWillDisappear 關閉,不關閉的話那么多 timer 掛載在 runloop 上感覺挺影響性能和流暢性的,就像管理內存一樣,申請和釋放配對使用,就不會泄露了,誰申請誰釋放的原則。但是很大的團隊的話,別人可能會寫錯,造成泄露,可以從技術上,團隊編程規范上解決他。

比如定一些規范,Controller 退出一定要成功銷毀,不能泄露內存。Block 里不能寫 self 等等。 

責任編輯:龐桂玉 來源: CocoaChina
相關推薦

2015-07-10 10:27:37

iOS NSTimer

2011-03-04 13:07:47

Filezilla

2009-06-03 16:41:21

Eclipse亂碼Eclipse

2009-05-31 09:07:35

Oracle鎖定

2011-01-19 17:54:48

2009-12-07 18:38:16

WCF異常

2011-06-17 11:10:51

Qt 中文 輸出

2020-12-25 19:16:03

C++編程語言

2009-02-18 09:30:10

AJAX跨域XML

2020-05-09 10:59:33

git cloneLinux文件

2010-01-15 09:38:08

磁盤被寫保護解決辦法

2010-04-19 14:57:16

Oracle收縮表分區

2013-07-15 14:46:34

iOS開發UIScrollVie移動開發

2009-08-31 08:35:54

Windows 7系統藍屏

2009-08-19 22:36:08

Ubuntu安裝VMw

2012-12-12 15:19:32

云安全

2010-09-13 14:26:04

sql server日

2009-11-26 10:15:42

Suse應用Ftp

2009-11-30 10:55:16

PHP頁面亂碼

2012-03-14 10:58:27

Java
點贊
收藏

51CTO技術棧公眾號

日韩视频免费观看高清完整版 | jizzjizzjizz国产| 亚洲性色av| 国产欧美日韩视频一区二区| 国产在线观看一区二区三区| 欧美黄色免费观看| 亚洲色图美女| 欧美情侣在线播放| 给我免费播放片在线观看| 九色视频网站在线观看| 麻豆精品国产91久久久久久| 欧美老少做受xxxx高潮| 给我免费观看片在线电影的| 91综合国产| 一区二区三区在线观看欧美| 欧美福利精品| 国产视频在线观看视频| 亚洲综合精品| 欧美成人免费小视频| 午夜久久久久久久| 95精品视频| 午夜激情一区二区三区| 伊人久久青草| 日韩国产福利| 国产成人在线看| 国产精品美女在线| 日本系列第一页| 国产精品久久占久久| 日韩精品免费在线视频| 激情在线观看视频| 经典三级在线视频| a级片在线观看免费| 欧美美女在线| 亚洲第一免费播放区| 不卡的在线视频| av有声小说一区二区三区| 亚洲一区二区三区美女| 一区二区视频在线观看| 国产大片在线免费观看| www..com久久爱| 97人人做人人人难人人做| 中文字幕乱码一区二区 | 99久久er热在这里只有精品15 | 日韩一级片中文字幕| 狠狠88综合久久久久综合网| 北条麻妃一区二区三区中文字幕| 美女洗澡无遮挡| youjizz亚洲| 欧美一级生活片| 午夜不卡福利视频| 成人日韩av| 欧美三区免费完整视频在线观看| 精品视频一区二区在线| 日韩大片免费观看| 午夜成人免费电影| 欧美视频中文字幕| 国产成人精品一区二区| 亚洲精品www久久久久久| 欧美日韩亚洲国产精品| 久久91精品国产91久久久| 亚洲精品卡一卡二| 欧美暴力喷水在线| 欧美大片大片在线播放| 久草视频在线资源站| 欧美激情在线| 欧美精品电影在线| 日韩少妇裸体做爰视频| 国产精品日韩久久久| 91av在线影院| 波多野结衣电影在线播放| 丝袜美腿亚洲一区| 国产在线精品自拍| av中文字幕播放| 国产v综合v亚洲欧| 精品国产福利| 免费理论片在线观看播放老| 久久精品一区四区| 亚洲精品中文字幕乱码三区不卡| 日韩专区在线| 一区二区三区精品| 奇米影视亚洲色图| xx欧美视频| 欧美视频在线观看一区二区| 国产欧美精品一二三| youjizzjizz亚洲| 亚洲午夜未满十八勿入免费观看全集 | 欧美乱妇23p| 久久久久99人妻一区二区三区| caoporn成人免费视频在线| 日韩av影视综合网| 国产午夜福利一区| 91精品国产自产拍在线观看蜜| 欧美激情精品久久久久久黑人| 91久久国产视频| 美美哒免费高清在线观看视频一区二区 | 精品国产成人系列| 成人片黄网站色大片免费毛片| 欧美肉体xxxx裸体137大胆| 久久精品国产成人| 国产成人精品片| 美国毛片一区二区| 国产麻豆乱码精品一区二区三区| 久热av在线| 亚洲精品免费电影| 97成人在线免费视频| 成人网ww555视频免费看| 日韩一区二区三区在线观看| 爱爱的免费视频| 一区二区三区国产精华| 欧美亚洲视频在线观看| 国产麻豆一精品一男同| 91日韩精品一区| 一本一道久久a久久精品综合蜜臀| 久久综合福利| 超鹏97在线| 色94色欧美sute亚洲线路二| av在线网站免费观看| 国产精品午夜一区二区三区| 久久69精品久久久久久国产越南| 无码人妻丰满熟妇区五十路| 粉嫩绯色av一区二区在线观看| 亚洲春色在线| 久草在线中文最新视频| 91精品在线免费| 免费黄色在线视频| 亚洲国产免费看| 91免费在线视频| 国产资源在线观看| 午夜精品123| 日韩精品xxx| 日韩精品久久| 青草青草久热精品视频在线观看| av在线免费在线观看| 国产精品人成在线观看免费| 大陆极品少妇内射aaaaa| 亚洲一区二区电影| 日韩亚洲成人av在线| 91视频久久久| 久久在线观看免费| 成人一对一视频| 国产一区二区三区亚洲| 久久久黄色av| 一卡二卡三卡在线| 中文字幕不卡在线播放| 可以免费在线看黄的网站| 久久免费视频66| 欧美华人在线视频| 亚洲黄色片视频| 亚洲精品国产成人久久av盗摄 | 亚洲国产日韩欧美综合久久 | 欧美日韩在线视频观看| 在线看黄色的网站| 伊人久久大香线蕉综合热线| 99久久国产免费免费| a天堂中文在线官网在线| 欧美精品精品一区| 波多野结衣亚洲一区二区| 九九热在线免费观看| 中国女人久久久| 精品国产乱码久久久久久久软件| av伦理在线| 日韩电影在线观看中文字幕| 91美女免费看| 国产视频不卡一区| 波多野结衣天堂| 日韩欧美一区二区三区在线视频| 成人av在线亚洲| av毛片在线免费| 欧美精品一区二区三区在线播放| 日本在线视频免费| 91免费在线播放| 色哟哟精品视频| 国产大片一区| 成人羞羞视频免费| 日韩电影毛片| 色视频www在线播放国产成人| 这里只有精品9| 亚洲精品成a人| 亚洲av无码一区二区三区网址| 久久久精品午夜少妇| 午夜精品电影在线观看| 91麻豆精品国产91久久久更新资源速度超快| 久久精品电影网| 蜜桃av噜噜一区二区三区麻豆| 精品久久久久久国产91| x88av在线| 国产一二三精品| 精品视频在线观看一区| 精品久久电影| 精品五月天久久| 偷拍盗摄高潮叫床对白清晰| 伊人久久大香伊蕉在人线观看热v| 欧美成人精品在线| 亚洲三区在线播放| 欧美日韩一区视频| 久久精品99久久久久久| 久久理论电影网| 红桃视频 国产| 一区二区日本视频| 伊人久久99| 美国十次av导航亚洲入口| 国产精品欧美风情| 538在线观看| 中文字幕亚洲一区二区三区| 亚洲精品久久久久久无码色欲四季| 欧美性69xxxx肥| 欧美黑人性猛交xxx| 亚洲日本香蕉视频| 午夜精品一区二区三区免费视频 | 亚洲成人av中文字幕| 无码视频在线观看| 一区二区三区免费网站| 精品人妻无码一区二区三区换脸| 精品一区二区在线观看| 久久精品国产精品亚洲色婷婷| 91欧美大片| 欧美日韩在线不卡一区| 网站一区二区| 国产精品一区专区欧美日韩| 激情黄产视频在线免费观看| 久久精品成人欧美大片| 国产在线观看网站| 精品国产区一区| 在线观看免费视频一区| 激情久久av一区av二区av三区| www深夜成人a√在线| 久久久美女毛片| 日韩aaaaa| 国产激情视频一区二区在线观看 | 欧美日韩国产精品综合| 国产精品无遮挡| 成人精品999| 99re视频精品| 成年女人免费视频| 国产一区二区三区香蕉| 91黄视频在线观看| 日韩欧美理论片| 快she精品国产999| 青青草成人免费在线视频| 中文精品久久| 91看片淫黄大片91| 一区二区三区在线| 欧美h视频在线观看| 日韩啪啪电影网| 日产精品高清视频免费| 伊人久久大香线蕉综合网站 | 国产精品国产馆在线真实露脸 | 欧美爱爱网站| 国产一区精品视频| 国产91精品入| 国产主播一区二区三区四区| 福利在线一区| 国内精品久久国产| 色婷婷av一区二区三区丝袜美腿| 国产综合第一页| 噜噜噜天天躁狠狠躁夜夜精品| 超碰在线观看97| 在线日韩成人| 国产在线观看一区| 国产精品tv| 精品免费日产一区一区三区免费| 国产厕拍一区| 女同一区二区| 精品国产不卡| 一本色道婷婷久久欧美| 图片小说视频色综合| 久久久久久久久影视| 国产一区二区三区四区三区四 | 欧美视频你懂的| 中文字幕视频免费观看| 欧美丰满少妇xxxxx高潮对白 | 黑人巨大精品欧美黑白配亚洲| 人人爽人人爽av| 国产999精品久久久久久绿帽| 日本一区二区免费视频| 99久久久免费精品国产一区二区| 中文字幕高清视频| 中文字幕一区二区5566日韩| 青青青在线免费观看| 亚洲一级不卡视频| 五月婷婷亚洲综合| 欧美午夜精品久久久久久孕妇 | 亚洲天堂网av在线| 亚洲国产综合色| 精产国品一区二区| 制服.丝袜.亚洲.另类.中文| 欧美特级特黄aaaaaa在线看| 亚洲精品狠狠操| 91这里只有精品| 欧美日本中文字幕| 日韩电影免费观看高清完整版| 91精品久久久久久久久青青 | 国产乱码在线| 国产精国产精品| 视频一区在线| 欧美在线激情| 欧美黄污视频| 99免费视频观看| 国产精品99久久久| 毛茸茸多毛bbb毛多视频| 国产精品三级久久久久三级| 久久久久久久久久久久久久免费看| 色婷婷激情综合| 亚洲av永久无码国产精品久久| 亚洲午夜激情免费视频| 日韩精品亚洲人成在线观看| 国产极品jizzhd欧美| 韩国精品福利一区二区三区| 亚洲精品成人久久久998| 国内精品美女在线观看| 爱情岛论坛亚洲首页入口章节| 丁香啪啪综合成人亚洲小说 | 97高清免费视频| 亚洲伊人精品酒店| 麻豆av一区| 欧美视频导航| 99re6在线观看| 久久久久久免费| 日韩特黄一级片| 欧美一区二区三区四区视频| 都市激情一区| 97精品国产97久久久久久| 高清一区二区三区av| 日本不卡二区高清三区| 亚洲精品免费观看| 佐山爱在线视频| 中文字幕亚洲在| 国产精品传媒在线观看| 亚洲国产精品人人爽夜夜爽| 91麻豆免费在线视频| 成人免费看吃奶视频网站| 欧美亚洲激情| 久久久久久香蕉| 99热精品一区二区| 国产污片在线观看| 日韩欧美国产wwwww| 久cao在线| 国产一区欧美二区三区| 日韩夫妻性生活xx| caoporn超碰97| 久久综合99re88久久爱| 人妻丰满熟妇av无码区| 日韩激情av在线播放| 爱福利在线视频| 国产精品毛片va一区二区三区| 欧美日韩午夜| av免费观看不卡| 亚洲无线码一区二区三区| 午夜精品一二三区| 欧美精品一区二区免费| 中文字幕 自拍| av高清不卡在线| 欧美一级高潮片| 亚洲精品在线观| 波多野结衣在线观看| 国产伦精品一区二区三区照片91| 在线成人www免费观看视频| 日批视频免费看| 亚洲国产wwwccc36天堂| 污污网站在线免费观看| 91av国产在线| 蜜桃精品wwwmitaows| 欧美一级黄色影院| 国产精品卡一卡二| 国产精品爽爽久久久久久| 久久99国产综合精品女同| 4438全国亚洲精品观看视频| 亚洲国产成人精品无码区99| 97se亚洲国产综合自在线不卡| 中文字幕在线观看免费视频| 亚洲精品一区久久久久久| 美女18一级毛片一品久道久久综合| 日本精品一区| 久久国产综合精品| 国产成人av免费在线观看| 日韩一级高清毛片| 97在线超碰| 欧美成熟毛茸茸复古| 日本不卡123| 中文字幕av播放| 亚洲福利在线看| 日本成人三级电影| 在线观看国产一区| 成人免费高清在线| 中文字幕69页| 美女999久久久精品视频| 久久久免费毛片| 国产一二三区av| 亚洲一区二区三区美女| 国产在线资源| 99精彩视频| 美日韩精品视频| 国产精品久久久久久久精| 亚洲国产精品va在看黑人| 91九色综合| 国产九色porny| 国产精品无遮挡| 日韩中文字幕综合| 国产一区视频在线播放| 亚洲美女色禁图|