开发者社区> 问答> 正文

关于 blocks 和实例变量的问题

读 blocks programming guide 看到一句:

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

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

展开
收起
a123456678 2016-07-27 17:44:49 2765 0
1 条回答
写回答
取消 提交回答
  • 这里的localVariable仍然是id类型呀,并不是值类型。
    就是之前的instanceVariable会 retain self,可能造成循环引用;而赋值给localVariable就只会 retain localVariable。
    我觉得那句注释的意思是,block 用到的localVariable,是使用它的值(局部变量值),而不是使用它作为一个实例变量或属性。顺便说,如果在 block 里给它赋值,相应的实例变量或属性是不会改变的。

    2019-07-17 20:00:56
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载