2011-03-24 184 views
1

我有一个保留计数为3的UIView,我只想知道如何释放它以保留计数为0?保留计数为3的对象

在此先感谢。

+8

永远不要看对象的保留计数。这是误导足够无用的。 – kubi 2011-03-24 00:37:20

+0

顺便提一下,发布有关导致您查看解决方案的保留计数的任何问题的单独问题可能很有用。 – 2011-03-24 00:56:24

回答

6

你是用+ alloc还是+ new创建的,还是用名称中有“copy”这个词的方法创建的?你发给它一个 - 保留信息吗?如果不是,你不拥有它并且不能释放它。并停止看保留计数;这样做只会使实际上非常简单的一组内存管理规则过于复杂。

-1
[object release]; 

但保留计数可能是3,因为视图当前正在使用中。你只需要释放一次。无论使用什么(如父视图或数组),都会在不再需要时释放它。你可能需要从父视图中删除它?

+0

您甚至不需要释放它一次,除非您使用暗示所有权的方法创建它,或者向它发送一个“保留”消息。 – 2011-03-24 00:41:23

+0

当然,但我正在阅读原始问题中的内容。 – Vagrant 2011-03-24 04:02:57

2

切勿使用保留计数进行调试。框架在幕后做了一些疯狂的事情,并且经常会导致您的保留数量与您认为应该存在的差异很大。随时发布,不用担心。

正如official documentation for -retainCount指出,

重要:此方法在调试内存管理问题没有价值的典型。因为任何数量的框架对象都可能保留了一个对象以保存对它的引用,同时autorelease池可能在对象上保存了任意数量的延迟发布,所以很难从此获得有用的信息方法。

不要依靠-retainCount。其他对象可能会在您不知道它的情况下保留您的对象,而自动释放对象可能会给您留下实际保留计数的错误印象。