亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS面試中如何優雅回答Block導致循環引用的問題

2020-07-26 02:54:04
字體:
來源:轉載
供稿:網友

前言

說到循環引用問題,最最最常遇到的,不是在項目中,而是在面試中。如果面試官問你開發中是否遇到過retain cycle,你如果說沒遇到過,估計已經很難跟面試官繼續友好的溝通下去了。

但是這個問題怎么回答呢,網絡上千篇一律的答案-->使用Block的時候遇到過,使用__weakSelf 代替 self 等等,可以說這個答案沒啥錯,但是所有人都回答的一樣,并不能突出我們的逼格,無法讓面試官知道我們在這方面有過研究,有閃光點。

對于開發者來說,喜歡探索,喜歡挖掘不懂的知識,在面試官眼里會加分不少。

探索是基于問題之上的-->比如:是否所有的Block中,使用self 都會導致循環引用?


系統自帶Block不會發生循環引用

如圖,使用系統自帶的UIView 的Blcok,控制器能被銷毀-->說明沒有發送循環引用。

原理: UIView的調用的是類方法,當前控制器不可能強引用一個類 ,所以循環無法形成 --> 動畫block不會造成循環引用的原因。

所以通過實踐得出第一個結論--> 并不是所有的Block中使用self,都會導致循環引用!

問題二:面試官問:那除了系統自帶的方法中的Block,你在其他Block中使用self 會導致循環引用嗎? -->可答:AFN框架!

最常用的數據請求框架-- AFNetWorking框架的Block是否會強引用?


AFN的Block是否會導致循環引用測試

如上圖所示,在AFN的 block { xxx self.view  } 使用self,并不會導致循環引用!

原理:AFN無循環是因為絕大部分情況下,你的網絡類對象是不會被當前控制器引用的,這時就不會形成引用環。(查閱資料得知)

小tips:也可能AFN底層有自己做了操作,這里沒探究到AFN框架底層,僅知道AFN不會造成循環引用。

那什么情況下會導致循環引用呢? --> 自定義Block


自定義Block中使用self

添加 viewDidLoad 提示框-->每次進入都打印viewDidLoad,可以確定是否離開視圖控制器-->如果是,但是沒有調用dealloc --> 循環引用


循環引用

這時候,我們發現循環引用發生了!所有我們答道:“我們在實際開發中,使用自定義Block,在Block { xxx }中使用self,導致了循環引用 ”

循環引用導致的原因: 相互強指向


循環引用原因

如何解決-->使用weakSelf,這個解決方法估計沒見過一百次的,都不算是真正參加過iOS面試的。

----------------------------- 華麗分割線--------------------------------------

一個大寫的excuse me 寫臉上,49行都報警告了,而且提示可能發送循環引用,這你都能因為這樣導致循環引用??這面試官如果知道這個,應該不會這么友好的放過你吧?

由于現在學iOS的太多了,所有可能面試官如果對于循環引用比較了解的話,并不會因為我們回答了上面兩個問題就放過我們~他可能會接著問:那如果是我們自己寫的Block,(非系統和AFN),在Block中使用self,是否一定會發生循環引用~

探究四:自定義Block是否一定會發生循環引用?


在其他控制器聲明一個強指向的Block

調用Blcok

執行效果

如圖:發現oneVC被銷毀了,說明,自己定義的Block,里面使用了self,并不一定會發生循環引用!

原理:block --> 強指向了self,但是self,并沒有指向Block!-->并沒有一個 self.block 或者 成員變量 @property block ,所有Block并沒有被強指向-->沒有發送循環引用!

-->Tips:循環引用發生的條件就是持有這個block的對象,被block里邊加入的對象持有。

逼格出現了??!華麗分割線! 既然系統的Block、AFN、都不會發生循環引用,自定義Block又有這么明顯的提示-->實際開發中不會遇到循環引用??

---------------------------------高逼格分割線-----------------------------------------

實際開發中:使用通知(NSNotifation),調用系統自帶的Block,在Block中使用self --> 會發生循環引用。


通知的接收方法

現在iOS的通知已經比較好用了,如圖第二個方法,我最常用的,特別方便,不需要寫@selector(方法)+ 調用,直接寫在Block中,就可以實現接收通知之后實現的代碼。


twoVC發送通知 --> 給oneVC

oneVC 接收通知

使用通知-發生循環引用

如圖!這才是實際開發中-->真正有可能發生循環引用的地方!確實也是在通知的Block,但是這次的循環引用并沒有提示,而且也確實發生了 --> 這才是真正告訴面試官:我們做過有實際開發,并且是在真實的開發環境中遇到了-->真正的循環引用?。。ú粌H僅是面試題講的一個Block的事,逼格明顯不夠)

解決辦法-->weakSelf!

總結

以上就是這篇文章的全部內容了,希望本文的內容對各位iOS開發者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久男人资源视频| 91久久久久久久久久久| 亚洲天堂男人的天堂| 久久久久久国产精品美女| 亚洲精品少妇网址| 欧美另类在线播放| 亚洲精品福利资源站| 亚洲视频免费一区| 伦伦影院午夜日韩欧美限制| 懂色av一区二区三区| 欧美性色视频在线| 91国产一区在线| 欧美日韩第一视频| 欧美日本黄视频| 日韩一区二区av| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美性生活大片免费观看网址| 国产精品一区二区电影| 精品一区二区三区四区| 中文字幕在线国产精品| 亚洲美女免费精品视频在线观看| 中文字幕av一区二区| 一区二区三区高清国产| 性色av一区二区三区在线观看| 亚洲日本欧美中文幕| 久久久久久久久久久国产| 三级精品视频久久久久| 亚洲资源在线看| 精品欧美激情精品一区| 最近中文字幕2019免费| 精品无人区太爽高潮在线播放| 粉嫩老牛aⅴ一区二区三区| 国产成人小视频在线观看| 精品久久久久久久久国产字幕| 欧洲成人免费视频| 国产精品观看在线亚洲人成网| 久久资源免费视频| 欧美国产第二页| 久久久久久久久久久亚洲| 国产精品一区二区电影| 在线看日韩欧美| 日产精品99久久久久久| www.午夜精品| 国产精品久久久久久久9999| 国产精品久久久久久久久久免费| 91久久国产综合久久91精品网站| 精品中文字幕视频| 国产精品高清网站| 亚洲欧美国产精品| 不卡在线观看电视剧完整版| 91国语精品自产拍在线观看性色| 亚洲最大福利视频| 精品国产网站地址| 日韩电影网在线| 亚洲天堂男人天堂女人天堂| 一区二区福利视频| 有码中文亚洲精品| 丝袜情趣国产精品| 91在线免费网站| 精品爽片免费看久久| 亚洲国产古装精品网站| 91亚洲国产成人久久精品网站| 亚洲电影免费在线观看| 在线视频欧美性高潮| 欧美一区二区影院| 77777亚洲午夜久久多人| 欧美日韩国产在线看| 一区二区三区 在线观看视| 91精品国产自产在线观看永久| 亚洲精品久久久久中文字幕二区| 一本色道久久综合亚洲精品小说| 俺也去精品视频在线观看| 久久精品成人动漫| 国产精品亚洲一区二区三区| 亚洲人成电影网站色xx| 日韩精品免费在线播放| 亚洲国产成人精品一区二区| 国产精品爽爽ⅴa在线观看| 久久亚洲精品中文字幕冲田杏梨| 中文字幕日韩av电影| 大荫蒂欧美视频另类xxxx| 欧美国产日韩在线| 亚洲美女av电影| 国内精品在线一区| 成人黄色片网站| 国产乱人伦真实精品视频| 国产亚洲在线播放| 色哟哟亚洲精品一区二区| 国产精品免费久久久久久| 欧美二区乱c黑人| 国产精品一香蕉国产线看观看| 亚洲欧美日韩另类| 久久久久久久一区二区三区| 国产福利视频一区| 亚洲欧美国产va在线影院| 欧美俄罗斯性视频| 日韩免费黄色av| 亚洲黄色www网站| 欧美大片欧美激情性色a∨久久| 欧美日韩亚洲天堂| 欧美亚洲第一区| 国色天香2019中文字幕在线观看| 在线视频欧美日韩| 久久精品成人一区二区三区| 国产免费一区二区三区在线观看| 九九九久久久久久| 亚洲性视频网站| 午夜精品久久久久久久久久久久久| 日本免费在线精品| 日韩av片永久免费网站| 成人网在线免费观看| 久久久91精品国产| 精品精品国产国产自在线| 欧美裸体xxxx极品少妇软件| xxxxxxxxx欧美| 成人黄色影片在线| 欧美最猛性xxxxx免费| 中文字幕av一区二区三区谷原希美| 精品视频久久久| 国产精品久久久av久久久| 亚洲激情视频在线观看| 久久亚洲欧美日韩精品专区| 亚洲成人a**站| 亚洲成色777777在线观看影院| 亚洲韩国青草视频| 欧美午夜女人视频在线| 精品动漫一区二区| 136fldh精品导航福利| www.日韩系列| 日韩极品精品视频免费观看| 国产精品高清在线| 国产精品美乳一区二区免费| 最近2019中文字幕大全第二页| 日韩欧中文字幕| 国产不卡一区二区在线播放| 国产成人一区二区在线| 人人做人人澡人人爽欧美| 午夜精品久久久久久久白皮肤| 日本午夜人人精品| 久久国产色av| 久久99久国产精品黄毛片入口| 岛国av在线不卡| 2021国产精品视频| 国产高清视频一区三区| 欧美国产日韩中文字幕在线| 国产欧美亚洲精品| 久久久久在线观看| 色诱女教师一区二区三区| 在线电影欧美日韩一区二区私密| 精品视频久久久久久久| 欧美国产精品va在线观看| 欧美性xxxxxx| 正在播放欧美一区| 美女福利精品视频| 欧美激情免费观看| 久久久久国产视频| 91精品在线国产| 亚洲精品福利免费在线观看| 精品国产福利在线| 国产一区二区三区三区在线观看| 国产精品成人一区二区三区吃奶| 精品久久久久国产| 亚洲va国产va天堂va久久| 中文字幕v亚洲ⅴv天堂|