關于Block的碎片整理

iOS中Block內(nèi)存管理分為三種:

  • NSGloabBlock
  • NSStackBlock
  • NSMallocBlock

1: MRC中使用的__block可以表示若引用,ARC中要使用__weak修飾表示弱引用.

  • NSGloabBlock:retain,copy,release 不會正價引用計數(shù)
  • NSStackBlock:retain.release ,copy不會改變引用計數(shù),copy可以
  • NSMallocBlock:位于堆區(qū),retain,release.引用計數(shù)改變.

注意:防止block循環(huán)引用,正確使用weak 和__block的修飾
驗證總結(jié)如下:

  • 作用域內(nèi)定義的block 沒有引用外部變量的在全局區(qū) 引用了外部變量 在堆區(qū)
  • block作為參數(shù) 如果引用了外部變量 是在棧區(qū),未引用還在全局區(qū)
  • 全局區(qū)的block 不會被拷貝到堆區(qū),無論是外部指針引用 還是copy 操作 都沒有任何改變
  • 只有棧區(qū)的block 如果被外部指針引用 或者copy 才會被拷貝到堆區(qū)


    WechatIMG361.jpeg
WechatIMG362.jpeg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前言 Blocks是C語言的擴充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了這...
    小人不才閱讀 3,886評論 0 23
  • 參考篇:iOS-Block淺談 前言:本文簡述Block本質(zhì),如有錯誤請留言指正。 第一部分:Block本質(zhì) Q:...
    夢蕊dream閱讀 61,968評論 41 323
  • 第一部分:Block本質(zhì) Q:什么是Block,Block的本質(zhì)是什么? block本質(zhì)上也是一個OC對象,它內(nèi)部...
    sheldon_龍閱讀 615評論 0 0
  • 大概是在2017年的時候,無意間在一篇標題特別吸引眼球的文章里看到簡書二字。當時我正失業(yè),在58同城上找工作,意外...
    陳沅甄閱讀 233評論 0 4
  • 我可以隨時隨地想象你的一舉一動 但,你不必知道 我可以隨時隨地的回憶 但,不會和你一起分享 你若詢問 我便若無其事...
    蟬翼呵呵閱讀 243評論 2 0

友情鏈接更多精彩內(nèi)容