当前位置:  开发笔记 > IOS > 正文

autorelease什么时候实际导致Cocoa Touch发布?

如何解决《autorelease什么时候实际导致CocoaTouch发布?》经验,为你挑选了2个好方法。

我知道你需要autorelease在iOS 上小心.我有一个方法,它返回一个alloc调用者所需的对象,所以在这种情况下 - 据我所知 - 我需要autorelease在它返回之前发送给被调用者中的对象.

这很好,但是一旦控件返回到手机(即在我的按钮点击处理完毕后),似乎自动释放池已被释放.我怀疑这是应该如何,但我想知道这种情况的最佳做法是什么.

我已经尝试retain从调用者发送一条消息,以便该对象不会被释放,然后显式释放它dealloc.

这是最好的方法吗?



1> Alex..:

自动释放池通常在每次运行循环迭代后释放.粗略地说,每个Cocoa和Cocoa Touch应用程序的结构都是这样的:

Get the next message out of the queue
Create an autorelease pool
Dispatch the message (this is where your application does its work)
Drain the autorelease pool

你描述的是预期的行为.如果你想保持一个对象不长于此,你需要明确地保留它.



2> Chuck..:

使用autorelease是一种说法,"对象,我不再要你了,但我会把你传递给其他可能想要你的人,所以不要消失." 因此,对象将长时间停留,以便您从方法返回它或将其提供给另一个对象.当某些代码想要保留对象时,它必须通过它来声明所有权retain.

有关正确使用所需的一切信息,请参阅内存管理指南autorelease.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有