關(guān)于Block的碎片整理

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

  • NSGloabBlock
  • NSStackBlock
  • NSMallocBlock

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

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

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

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


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

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

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

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