关于 blocks 和实例变量的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于 blocks 和实例变量的问题

a123456678 2016-07-27 17:44:49 1177

读 blocks programming guide 看到一句:

id localVariable = instanceVariable;
dispatch_async(queue, ^{
    // localVariable is used by value, localVariable is retained (not self) 
    doSomethingWithObject(localVariable);
}); 

想请教,为何更换一个指针后,localVariable就是值类型了呢?

分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 20:00:56

    这里的localVariable仍然是id类型呀,并不是值类型。
    就是之前的instanceVariable会 retain self,可能造成循环引用;而赋值给localVariable就只会 retain localVariable。
    我觉得那句注释的意思是,block 用到的localVariable,是使用它的值(局部变量值),而不是使用它作为一个实例变量或属性。顺便说,如果在 block 里给它赋值,相应的实例变量或属性是不会改变的。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章