微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Objective-C保留计数澄清

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

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

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

谢谢!

解决方法

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

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐