iOS Objective-C dealloc方法释放的是什么?

一个对象当我不使用它时,可以release或autorelease,为什么还要在dealloc方法中在释放一次?... 一个对象当我不使用它时,可以release或autorelease,为什么还要在dealloc方法中在释放一次? 展开
 我来答
chenluyao0629
推荐于2016-04-09 · TA获得超过820个赞
知道小有建树答主
回答量:538
采纳率:50%
帮助的人:410万
展开全部
你自己不应该 dealloc 任何对象,objective-c 里面通过reference counting来管理memory,当一个对象的 reference counting=0时,系统自动会调用dealloc释放此对象,所以在没有auto reference counting 下,你用release, retain就好了,不用dealloc。

auto reference counting(ARC)
然而现在随着ARC的推广,当你不再用一个对象时,编译器(compiler)会自动检查你的代码,看你是否还需要此对象与否,所以现在连retain,release都不用了,有点类似java里面的garbage collection, 但跟java garbage collection又有不同,因为ARC 不管reference cycles,你需要用week,strong来调整reference cycles,不过这里就不多讲了

总之,推荐使用ARC
GhostHidden
推荐于2016-10-17 · TA获得超过136个赞
知道答主
回答量:38
采纳率:0%
帮助的人:33.2万
展开全部
如一个对象 A,A 有一个属性 p ,p 也是一个对象,A 还有很多方法。
如果 A 的很多方法都用到了 p 属性,如果在其中一个方法中释放了 p 属性,其它方法使用 p 属性时 p 属性已经不存在了,程序就出错。
那要什么时候释放 p 属性呢?
dealloc 方法会在对象销毁时程序自动调用。
也就是说 当 A 对象被销毁时程序就会自动调用 A 对象的 dealloc 方法,这时在 dealloc 方法中就可以释放 p 属性了。
dealloc 方法中主要用于释放对象的属性。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雄迁承02
2013-10-25 · TA获得超过183个赞
知道答主
回答量:181
采纳率:0%
帮助的人:90.9万
展开全部
autorelease 原理:
a.先建立一个autorelease pool
b.对象从这个autorelease pool里面生成。
c.对象生成 之后调用autorelease函数,这个函数的作用仅仅是在autorelease pool中做个标记,让pool记得将来release一下这个对象。
d.程序结束时,pool本身也需要rerlease, 此时pool会把每一个标记为autorelease的对象release一次。如果某个对象此时retain count大于1,这个对象还是没有被销毁。
追问
你特么是在哪粘贴的这段话,驴唇不对马嘴。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式