关于release后retainCount还是1的问题

转自:http://www.cocoachina.com/bbs/read.php?tid=175523

realse之后再调用还能调用的的问题,我做了这么多年也是经常遇到,也曾经试图寻找原因,
就像6楼说的,很多时候都会出现realse过后还能调用的现象。而且对象不是autorealse的。
我还遇到过奇葩的是,每次要等上好几秒钟再调用才会出现空指针异常。(代码里绝对没有手动多线程)
还有很多时候跟你测试的硬件环境还有关,可以说,ios的内存管理策略虽然一如既往的是一套,但是每个版本都有细微的变化,
使用中还是能感觉出来,只是没有官方的说明,无法正确的解释。

不过随着一些界面业务该用autorelease之后,这种现象越来越不关注了。 
唯一的可能是,这块内存还没有被重写,这个可能的确是有的,因为你不用一块内存,不代表内容真的清除掉,只是一个指针的单纯移除而已,更好运气是刚好被重写为0,这样是空爷不会崩溃

这个和iOS无关,几乎所有的OS都有这个情况

autorelease什么时候真正释放,这个google一堆了,就不展开了
其实情况挺多的,你说的是一种,

另外一种是,你的变量指针指向的地址,正好被 另一个对象用来存储了,这样,你release之后发现,对象实体还是存在的,有可能已经不是原来的实体了。
但是,再release一次,可能就会影响到其他的对象实体了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值