iOS 内存管理里面的 property 的语义属性为retain时,它的内部做优化时,为什么最后又把新的实例变量再retain一次。
setter方法
if(_name != name){
[ _name release]
_name = [name retain];
}
你那个name属于现在一个新的对象,它指向一块内存,引用计数的原理就是去标记一块内存有几个对象指向它,当没对象指向他的时候引用计数等于0,然后调用dealloc方法,所以当你的name申请的时候count = 1,这时name指向这块内存,然后你又把这块内存的地址给了_name,此时_name也指向了这块内存,所以这块内存的count应该加1等于2,所以通过retain让他加到2
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。