开发者社区> 问答> 正文

关于iOS 内存管理里面的 property 的语义属性

iOS 内存管理里面的 property 的语义属性为retain时,它的内部做优化时,为什么最后又把新的实例变量再retain一次。

 setter方法
 if(_name != name){
 [ _name release]
 _name = [name retain];
 }

展开
收起
爵霸 2016-03-11 14:03:59 1845 0
1 条回答
写回答
取消 提交回答
  • 你那个name属于现在一个新的对象,它指向一块内存,引用计数的原理就是去标记一块内存有几个对象指向它,当没对象指向他的时候引用计数等于0,然后调用dealloc方法,所以当你的name申请的时候count = 1,这时name指向这块内存,然后你又把这块内存的地址给了_name,此时_name也指向了这块内存,所以这块内存的count应该加1等于2,所以通过retain让他加到2

    2019-07-17 18:59:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载