一個問題
假設(shè)b為一個block, a為b外的一個NSMutableArray對象撩幽,現(xiàn)在需要在b內(nèi)調(diào)用[a addObject:...]库继,那么在a定義的地方是否需要加__block的修飾符。聽我解釋
__block 是修飾『變量的指向』是否可以被修改摸航,意思是在 block外面變量 a 指向了一個對象制跟,但是我需要在 block 中將這個變量重新指向其他對象。舉個栗子
1.png
正常運行酱虎。結(jié)果為:
a1:test p1:0x79e99e00
a2: p2:0x79e99e00
2.png
編譯報錯雨膨。如果改為
3.png
正常運行,結(jié)果為:
a1:test p1:0x7c561940
a2: p2:0x7af6ba40
- 答案
回到之前的問題读串,由于在b內(nèi)調(diào)用[a addObject:...]只是改變了a所指對象的『內(nèi)容』聊记,并沒有改變變量 a 的『指向』,所以不需要在定義a的地方加__block的修飾符恢暖。