程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> ios-在block中保留的self訪問屬性問題

ios-在block中保留的self訪問屬性問題

編輯:編程綜合問答
在block中保留的self訪問屬性問題

根據說明文件,在下面的代碼中,保留self是用來保證在block調用時,圖片對象運行。但是,我不太明白,單單保存圖片就可以保證它不會消失,那麼為什麼還要保留self呢?

self.finishBlock = ^{
    self.image.hidden = YES;
}

是不是在直接訪問圖片的時候適用的?

self.finishBlock = ^{
    _image.hidden = YES;
}

最佳回答:


block需要保留block中任何捕獲到的對象。你的第一個block例子就是:

self.finishBlock = ^{
    [[self image] setHidden:YES];
}

block需要保留self,這樣才能正確調用方法,由於block不能單純的保留圖片,因為只有在block執行,圖片方法被調用時才能捕獲到圖片,所以唯一的辦法就是保留self。

所以在第二個block例子中:

self.finishBlock = ^{
    self->_image.hidden = YES;
}

重申一遍,self必須保留,這樣block執行的時候,才能訪問_image ivar正確的值

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved