Objective-C保留计数澄清

我有点理解保留的重要性.但不是完全的.我看了很多谷歌试图理解,但我仍然没有.

现在我在一些代码(我正在进行iPhone开发),我认为我应该使用它们但不完全知道如何.

有人能给我一个如何以及为何使用它们的快速而好的例子吗?

谢谢!

解决方法

我听过的最好的解释是来自Aaron Hillegass:

把对象想象成一只狗.你需要一条狗的皮带,以防止它逃跑和消失,对吧?

现在,想一下保留作为牵引带.每当你打电话保留时,你都会在狗的项圈上加一条皮带.你说,“我希望这条狗能够坚持下去.”你对皮带的保持确保狗会一直待在你完成之前.

想想释放是从狗的衣领上取下一条皮带.当所有的皮带被移除后,狗可以逃跑.不能保证狗会在身边.

现在,假设你叫保留并在狗身上系上皮带.我也需要这条狗,所以我和你一起走,开始训练他.当你完成了狗之后,你就打电话给释放并移除你的皮带.尽管我还在训练他,但没有更多的牵引带和狗跑开了!

相反,如果我在开始训练他之前打电话给狗,我会在领子上再戴一条皮带.当你打电话给释放并移除你的皮带时,我仍然有一个,而狗还不能消失.

不同的物体可以通过调用保留并在其衣领上放置另一条皮带来“拥有”狗.每个物体都确保狗在完成之前不会消失.在所有的皮带被移除之前,狗不能消失.

自动释放池变得更加复杂,但是简单地说,您可以将自动释放称为将皮带交给培训师.你不再需要这只狗了,但是你没有立刻取下你的皮带.训练师稍后会脱掉皮带;当你需要它时,仍然无法保证狗会在身边.

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...