美文网首页
Block为什么使用copy?

Block为什么使用copy?

作者: 丨十三叔丨 | 来源:发表于2019-05-05 17:50 被阅读0次

block:本质就是一个object-c对象
block:存储位置,可能分为3个地方:代码去,堆区、栈区(ARC情况下会自动拷贝到堆区,因此ARC下只能有两个地方:代码去、堆区)

代码区:

不访问栈区的变量(如局部变量),且不访问堆区的变量(alloc创建的对象),此时block存放在代码去。

堆区:

访问了处于栈区的变量,或者堆区的变量,此时block存放在堆区。–需要注意实际是放在栈区,在ARC情况下会自动拷贝到堆区,如果不是ARC则存放在栈区,所在函数执行完毕就会释放,想再外面调用需要用copy指向它,这样就拷贝到了堆区,strong属性不会拷贝、会造成野指针错区。

相关文章

网友评论

      本文标题:Block为什么使用copy?

      本文链接:https://www.haomeiwen.com/subject/kcghoqtx.html