美文网首页
block与__block

block与__block

作者: 婼熙之名 | 来源:发表于2018-12-19 17:37 被阅读0次

block内局部变量的修改

1.基本数据类型:

1)不使用__block修饰

代码:

运行结果:

结论:对于基本数据类型,程序编译时block会将“捕捉”到的变量复制一份,然后对复制的这个变量进行修改。因为内存地址不相同,所以block作用域内的变量跟作用域外的变量值的改变互不影响.

2)使用__block修饰

代码:

运行结果:

结论:

当用__block来修饰变量的时候,在block内部调用变量与作用域外的变量指向相同内存地址,所有获取到的值是最新的变量值。并且block作用域内部可以直接对__block修饰的值进行修改(不适用__block修饰时,block作用域内直接写a =a+2会直接报错)

2.对象指针

结论:一个对象指针,在block作用域内复制的是对象的这个指针,而不是对象,复制之后的指针仍然指向原来的对象,所以对block内部model.title进行操作是对原对象属性的修改。

相关文章

网友评论

      本文标题:block与__block

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