Objective-C保留计数澄清

Objective-C保留计数澄清,第1张

概述我有点理解保留的重要性.但不是完全的.我看了很多谷歌试图理解,但我仍然没有. 现在我在一些代码(我正在进行iPhone开发),我认为我应该使用它们但不完全知道如何. 有人能给我一个如何以及为何使用它们的快速而好的例子吗? 谢谢! 我听过的最好的解释是来自Aaron Hillegass: 把对象想象成一只狗.你需要一条狗的皮带,以防止它逃跑和消失,对吧? 现在,想一下保留作为牵引带.每当你打电话保留 我有点理解保留的重要性.但不是完全的.我看了很多谷歌试图理解,但我仍然没有.

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

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

谢谢!

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

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

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

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

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

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

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

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

总结

以上是内存溢出为你收集整理的Objective-C保留计数澄清全部内容,希望文章能够帮你解决Objective-C保留计数澄清所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1032983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存