1.block是存儲在堆中還是棧中?
默認情況下block在棧中嗽元,但是如果對block進行了一個copy操作并徘,block會轉移到堆中
如果block在棧中,block訪問了外界的對象鄙币,那么不會對對象進行retain操作
如果block在堆中,block訪問了外界的對象蹂随,那么會對對象進行一次retain操作
如果給外界的對象加上了__block十嘿,那么就算block在堆中,也不會對外界對象進行一次retain操作
2.為什么給外界變量加上__block就能修改外界變量的值糙及?
因為__block進行的是地址傳遞详幽,所以可以在block中修改外界變量的值,默認情況下block不能修改外界變量的值浸锨,因為他進行的是copy操作