場景:當你在某個界面請求網絡數據的時候,用戶不願意等待點擊了返回按鈕,此時在Block當中用如下的方式使用weakSelf的話,有可能會奔潰(因為在並發編程的情況下,雖然在if判斷的時候weakself不為空,但是不保證if語句里面的weakself不為空),所以為了安全 ...
ARC下,關於block里面使用self weakSelf strongSelf,理解一直沒有特別的透徹,今天花時間研究了一下,總結如下: 其實一共就涉及到兩個問題: .是否循環引用了 .block里面的代碼,不一定執行到哪行時,VC可能就釋放了,self就為nil了,那么你到底想讓代碼在這種情況下如何執行。 其實到底用self weakSelf還是strongSelf,就是上面兩個問題的排列組 ...
2016-05-26 18:46 1 2159 推薦指數:
場景:當你在某個界面請求網絡數據的時候,用戶不願意等待點擊了返回按鈕,此時在Block當中用如下的方式使用weakSelf的話,有可能會奔潰(因為在並發編程的情況下,雖然在if判斷的時候weakself不為空,但是不保證if語句里面的weakself不為空),所以為了安全 ...
首先要說說什么時候使用weakSelf和strongSelf。 下面引用一篇博客《到底什么時候才需要在ObjC的Block中使用weakSelf/strongSelf》的內容: Objective C 的 Block 是一個很實用的語法,特別是與GCD結合使用,可以很方便地實現並發、異步任務 ...
轉載,原文: http://blog.lessfun.com/blog/2014/11/22/when-should-use-weakself-and-strongself-in-objc-block/ 當然有一個更詳細的專題: http://tanqisen.github.io ...
block會copy要在block中使用的實變量,而copy會是變量的retainCount + 1,如若在不注意很容易造成循環引用。而所謂的循環引用的本質就是,兩個對象相互引用,從而造成對象不能正常的dealloc。所以解決的辦法就是讓引用的一方是weak的,這樣就使得相互引用的閉環被打破,能夠 ...
_weak typeof(self) weakSelf = self; (一)內存管理原則 1、默認strong,可選weak。strong下不管成員變量還是property,每次使用指針指向一個對象,等於自動調用retain(), 並對舊對象調用release(),所以設為nil等於 ...
typeof(self) 是獲取到self的類型,這樣定義出的weakSelf就是和self一個類型的, 加上__weak是建立一個若引用,整句就是給self定義了一個若引用性質的替身;這個一般用在使用block時會用到,因為block會copy它內部的變量,可能會造成引用循環,使用__weak ...
蘋果對編譯器在不斷優化,GCD方法中的block基本都不需要使用weakself,並不會造成循環引用。 dispatch_after官方文檔中對block部分的說明: 一:使用self 從ViewControllerA push ...
什么時候在block中不需要使用weakself 問題 我們知道,在使用block時為了避免循環引用,通常需要使用weakself與strongself,例如: 那么什么時候在block里調用self,不需要使用weak self呢? 答:在block本身不被self持有,而被別的對象 ...