Block注意事項

1.block是存儲在堆中還是棧中?

默認情況下block在棧中,但是如果對block進行了一個copy操作,block會轉移到堆中

如果block在棧中,block訪問了外界的對象,那么不會對對象進行retain操作

如果block在堆中,block訪問了外界的對象,那么會對對象進行一次retain操作

如果給外界的對象加上了__block,那么就算block在堆中,也不會對外界對象進行一次retain操作

2.為什么給外界變量加上__block就能修改外界變量的值?

因為__block進行的是地址傳遞,所以可以在block中修改外界變量的值,默認情況下block不能修改外界變量的值,因為他進行的是copy操作

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容