第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于 blocks 和實例變量的問題

關(guān)于 blocks 和實例變量的問題

縹緲止盈 2019-04-07 11:18:16
讀blocksprogrammingguide看到一句:idlocalVariable=instanceVariable;dispatch_async(queue,^{//localVariableisusedbyvalue,localVariableisretained(notself)doSomethingWithObject(localVariable);});想請教,為何更換一個指針后,localVariable就是值類型了呢?
查看完整描述

2 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

這里的localVariable仍然是id類型呀,并不是值類型。
就是之前的instanceVariable會retainself,可能造成循環(huán)引用;而賦值給localVariable就只會retainlocalVariable。
我覺得那句注釋的意思是,block用到的localVariable,是使用它的值(局部變量值),而不是使用它作為一個實例變量或?qū)傩?。順便說,如果在block里給它賦值,相應(yīng)的實例變量或?qū)傩允遣粫淖兊摹?pre>
                            
查看完整回答
反對 回復 2019-04-07
?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

他這段代碼寫錯了。
他說的意思應(yīng)該只是用指針的值,而不想賦值的時候retain。instanceVariable看情況應(yīng)該是個成員變量。如果不是self.instanceVariable使用的話,self是不會retained。只有instanceVariable會retained。也就是你這段block執(zhí)行,可能會出現(xiàn)self被釋放,但是instanceVariable有值的情況。
除了值類型,block拿走都會對引數(shù)加一的。
                            
查看完整回答
反對 回復 2019-04-07
  • 2 回答
  • 0 關(guān)注
  • 322 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號