1.對於block,理解,mrc和arc下有什麼區別,使用注意事項
區別:
block可以儲存在棧中,也可以在堆中
預設儲存在棧中,不需要管理記憶體
儲存在堆中的block會對block進行retain操作
(MRC)block在堆中時,不想對block進行retain操作,前面加__block
(ARC)前面加__weak或__unsafe_unretained
__weak和__unsafe_unretained的區別:__weak則在釋放時會對物件賦值nil,後者不會
Block_copy使棧中的block轉移到堆中,並對block會引用的物件進行retain操作
避免block引用的物件進行retain操作,在引用物件宣告時前面加__block
注意事項:
防止迴圈引用複製程式碼