什么时候应该使用
编辑:我不是在寻找调试器告诉你要这样做还是那样做的情况。所以,我查阅了this。
简而言之,以下是
retain
?我理解它会增加对象引用计数,基本上下一个对该对象的release
不会调用dealloc
。好的,那又怎样呢?我看到一些说法认为这是一种约定俗成的做法,如果你关心一个对象,就将其retain
。有没有相关的例子?这是真的吗?编辑:我不是在寻找调试器告诉你要这样做还是那样做的情况。所以,我查阅了this。
简而言之,以下是
retain
用法示例。
- 在您的代码中,您调用了一个返回您不拥有的对象的方法
- 您使用该对象
- 然后您想要释放它 => 您无法这样做,因为您不是所有者
- 您的解决方案是使用
copy
或retain
。如果您使用retain
,则将获得该对象的所有权。 - 然后,要释放该对象,您可以执行2个
release
(因为当您保留时引用计数为1 + 1)或直接在其上使用dealloc
就这样吗?我认为不是,因为一个对象可以有多个所有者。所以对于最后一点,调用dealloc
将真正“杀死”该对象;但是通过2个release
,您将不是所有者,但创建它的程序仍将是所有者,因此该对象仍然存在(泄漏?僵尸?)
请帮助我理清思路。