关于block

2017-10-27  本文已影响0人  风车2017

当引用到外部的变量

1 无__block关键字时,内部直接创建一个同名变量,然后赋值。所以内部变量的地址 跟外面是不一样的。

2 有__block关键字时,内部创建一个结构体来存储变量。以后使用变量的时候,就相当于修改val->__forwarding->val。

当复制到堆上的时候,也会新建一个新的结构体,并把栈上__forwarding指向到堆上的结构体。所以block复制到堆上后val地址会改变。

参考

http://blog.csdn.net/abc649395594/article/details/47086751

https://www.zhihu.com/question/39980914

上一篇 下一篇

猜你喜欢

热点阅读