block用copy修飾

block快的存儲(chǔ)位置(block入口的地址)可能存放在3個(gè)地方:代碼區(qū)(全局區(qū))、堆區(qū)、棧區(qū)(ARC情況下回自動(dòng)拷貝到堆區(qū)、因此ARC下只有兩個(gè)地方:代碼區(qū)和堆區(qū))。


我們將block聲明為copy的原因是在代碼塊里面我可能會(huì)使用一些本地變量。而block一開(kāi)始是放在棧上的,只有copy后才會(huì)放到堆上。如果不加copy屬性,當(dāng)其所在棧被釋放的時(shí)候,這些本地變量將變得不可訪問(wèn)。一旦代碼執(zhí)行到block這段就會(huì)導(dǎo)致bad access。



???Block如果沒(méi)有引用外部變量

保存在全局區(qū)(MRC/ARC一樣)

???Block如果引用外部變量

ARC保存在 堆區(qū)(默認(rèn)進(jìn)行copy); MRC保存在 棧區(qū)必須用copy修飾block;

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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