关于block

当引用到外部的变量

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

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

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

参考

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容