iOS-17-系統的動畫block中的block為什么不用弱引用?

UIView的動畫block不會造成循環引用的原因就是,這是個類方法,當前控制器不可能強引用一個類,所以循環無法形成。
不需要,之所以需要弱引用本身,是因為怕對象之間產生循環引用,引起程序的崩潰!
所謂“引用循環”是指雙向的強引用,所以那些“單向的強引用”(block 強引用 self )沒有問題,比如這些:

1.  [UIView animateWithDuration:duration  animations:^{ 
[self.superview layoutIfNeeded]; 
}]; 
2.  [[NSOperationQueue mainQueue] addOperationWithBlock:^{
 self.someProperty = xyz; 
}]; 
3.  [[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification" 
                          object:nil 
                           queue:[NSOperationQueue mainQueue]
                           usingBlock:^(NSNotification * notification) {
                                              self.someProperty = xyz; 
}];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,572評論 6 30
  • Block Block底層原理實現 首先我們來看四個函數 造成這樣的原因是:傳值和傳址。為什么說會有傳值和傳址,把...
    b485c88ab697閱讀 7,899評論 0 41
  • 在iOS實際開發中常用的動畫無非是以下四種:UIView動畫,核心動畫,幀動畫,自定義轉場動畫。 1.UIView...
    請叫我周小帥閱讀 3,155評論 1 23
  • 1、Block底層原理實現 首先我們來看四個函數 造成這樣的原因是:傳值和傳址。為什么說會有傳值和傳址,把.m編譯...
    iLees閱讀 802評論 0 4
  • A little bear and rabbit lived in a village, they had ...
    1J46閱讀 146評論 0 0