1. 程式人生 > >iOS 防止迴圈引用的兩個方法

iOS 防止迴圈引用的兩個方法


    __block UITableViewController *weakself  = self;

    [self.tableView addJElasticPullToRefreshViewWithActionHandler:^{
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{


            //請求好資料,停止重新整理
            [weakself.tableView stopLoading];
        });
    }LoadingView
:loadingViewCircle];

以上程式碼中 存在於UITableViewController 中 self擁有tableView這樣一個成員變數(廢話)
在此block塊中, 我們要針對 self.tableview 呼叫停止重新整理方法
這樣 難免會出現迴圈引用的問題


__weak __typeof(self)weakSelf = self;

或者

__block UITableViewController *weakself = self;

這兩方法都可以 至少不報錯

就是不知道第二個方法 定義一新的UITableviewController 會不會產生一個新的UITabviewController (感覺應該不會 ,這裡沒用 alloc init 方法呼叫)

相關推薦

iOS 防止迴圈引用方法

__block UITableViewController *weakself = self; [self.tableView addJElasticPullToRefreshViewWithActionHandler:^{

iOS TableView優化的方法(優化卡頓)

方法二: 可以利用UIScrollViewDelegate代理很好的解決這問題 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)dece

IOS迴圈引用及解決方法

何為迴圈引用: 迴圈引用可以簡單理解為A引用了B,而B又引用了A,雙方都同時保持對方的一個引用,導致任何時候引用計數都不為0,始終無法釋放。 後果: 記憶體不能及時釋放,導致記憶體洩漏,引發程式崩潰。 幾種迴圈引用情景: 1、delegat

TSQL不用遊標就可以迴圈方法

方法一: SELECT * INTO #t1 FROM dbo.HorseBase DECLARE @id int DECLARE @t2 table (id int) WHILE (exists(SELECT HorseNumber FROM #t1)) BEGIN SELECT TOP

iOS 精簡Controlelr代碼的方法

時間 復用 github cti 發的 tor role app demo MVC是蘋果推薦使用的iOS APP架構。後來又有MVVM,MVP等架構出現。主要目的是讓業務邏輯、展示、數據各個層級解耦。實現最大程度上的代碼復用。 對MVC這種架構來說,隨著APP中模的增多,控

iOS 監聽音量鍵事件的方法+後臺監聽音量鍵

方法一,使用通知: 1、新增監聽 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeDidChange:)name:@"AVSystemContro

iOS 常用的儲存圖片的方法

第一種、就是儲存到系統相簿中,這個也是最簡單的,當然使用者想要訪問系統相簿也是需要許可權的,需要使用者同意。 在Plist檔案加入下面的鍵值對就可以了 key : Privacy - Photo Library Usage Description          val

iOS專案中引用第三方庫引發衝突的解決方法

這個真蛋疼~~~~ 解決方法如下: iOS程式開發過程中引用多個第三方庫時會出現類名重疊,導致衝突,具體的衝突錯誤提示如下: duplicate symbol OBJC_IVAR$_AFHTTPSessionManager._requestSerializer in:

string [] 去除重復字符方法

技術分享 tex arp [] log list rep replace alt 不廢話直接看圖 結果 代碼: this.txtListHTML.Text = String.Join(",", list.Replace("\r\n", ",").Split(‘,‘)

CSS 樣式中的方法

txt top 需要 不能 mar nbsp 效果 tom 容易 在很多時候,我們需要LI開頭空一點距離。結尾不能再有下劃線了。這個效果在以前是很難實現的。但是有了下面兩個選擇器,非常容易做出這種東西。 .slideTxtBox .bd ul > :fi

iOS怎麽比較對象的相等?

== array nbsp nta self another 比較 屬性 add 在iOS中如果使用==來比較兩個對象,比較的是對象的內存地址,一般不能滿足我們的需求。 例如有一個Person類,當Person對象的所有屬性都一致時,就認為這兩個對象相等,可以按照下面的方法

解決rpm conflicts with file from package的方法

rpm沖突1、卸載掉沖突的文件,安裝新的文件。如果由於由於依賴關系導致要卸載很多軟件,那可以優先考慮下一個方法。yum -y remove libstdc++-4.4.7-11.el6.i686註意,卸載的是軟件,不是rpm包。可以使用rpm -qa|grep lisbstdc 查看已安裝的包含lisbsta

ModelMap對象的 addAttribute,put方法區別

對象 lan this eval 空值 lar 是否 strong return 這個是 源碼中 ModelMap的定義 類 public class ModelMap extends LinkedHashMap<String, Object>說明 Mod

對於src路徑問題,深層理解的實踐。且對於輸出流write()方法的源碼閱讀。

nco != gpo del ppi 本地 thead name println 根據昨天的總結,可深層理解圖片中src的路徑。所以今天實現了一個想法。就是路徑寫入的是Controller,然後自動去本地找。 其實就是將電腦的本地圖片 顯示出來。通過輸出流的方式。 代碼如下

解密網頁加密的方法

window rip 最終 地址欄 正是 還原 inner 解析 tel 1.來源pst document.write = window.alert;eval = window.alert; 把這兩行加在加密代碼前面,然後執行,彈出message後ctrl+c 2.Auth

記住這方法,手機密碼解鎖不求人

現在的手機一般都有指紋解鎖和密碼解鎖兩種解鎖模式,一般情況下手機只要不關機,基本都是指紋解鎖,畢竟比較方便。但是有時候頻繁更改密碼或者長時間未輸入密碼,開機之後指紋是沒有反應的,那麼接下來看看如何在忘記密碼鎖的時候如何解鎖。 推薦方法1:完美解鎖手機同時儲存資料 這個方法要求華為手機使用者先前

program的發展史及方法

program的發展史(1950-如今) 三個階段:  第一個階段是1950年代到1960年代,是程式設計階段,基本是個體手工勞動的生產方式。這個時期,一個程式是為一個特定的目的而編制的,軟體的通用性是很有限的,軟體往往帶有強烈的個人色彩。早期的軟體開發沒有什麼系統的方法可以遵循,軟體設計是在某個人

Python-列表轉為字典的方法

1、現在有一個列表,list1 = [‘key1’,‘key2’,‘key3’],把他轉為這樣的字典:{‘key1’:‘1’,‘key2’:‘2’,‘key3’:‘3’} 方法:再構造一個列表list2 = [‘1’,‘2’,‘3’],使用zip轉換為元組後,在將元組轉換為字典

關於request.getRequestDispatcher()的方法以及request域

一、getRequestDispatcher() getRequestDispatcher()包含兩個方法,分別是請求轉發和請求包含。 如下: RequestDispatcher rd = request.getRequestDispatcher("/MyServlet"); 請求轉

Servlet中的RequestDispatcher 方法詳解【轉發】

RequestDispatcher 代表請求的派發者。它有2個動作:forward 和 include 。客戶端對於任何一個請求,可以根據業務邏輯需要,選擇不同的處理辦法: 1、請求的是誰,誰就自己處理並響應,例如請求的是一個html,則web瀏覽器顯示的就是這