Tom*_* B. 1 cocoa objective-c retain
我有点理解保留的重要性.但并非如此.我看了很多谷歌试图理解,但我仍然没有.
现在我在一些代码(我正在进行iPhone开发),我认为我应该使用它们但不完全知道如何.
有人能给我一个快速而好的例子,说明如何以及为何使用它们?
谢谢!
dmk*_*ash 20
我听过的最好的解释来自Aaron Hillegass:
把对象想象成一只狗.你需要一条狗的皮带,以防止它逃跑并消失,对吧?
现在,把它想象retain成一条皮带.每次打电话retain,都会在狗的项圈上添加皮带.你说,"我希望这条狗能够坚持下去." 你对皮带的保持确保狗会一直待在你完成之前.
想象一下release从狗的衣领上取下一条皮带.当所有的皮带被移除后,狗可以逃跑.不能保证狗会在身边.
现在,说你打电话retain给狗带上皮带.我也需要这条狗,所以我和你一起走,开始训练他.当你完成了狗,你打电话release并删除你的皮带.尽管我还在训练他,但没有更多的牵引带和狗跑开了!
相反,如果我retain在开始训练之前给狗打电话,我就会在领子上再戴一条皮带.当你打电话release并取下你的皮带时,我仍然有一个,狗还不能消失.
不同的物体可以通过呼叫retain并在其衣领上放置另一条皮带来"拥有"狗.每个物体都确保狗在完成之前不会消失.在所有的皮带都被移除之前,狗不能消失.
自动释放池变得更加复杂,但简单地说,您可以将调用autorelease视为将皮带交给培训师.你不再需要这只狗了,但是你没有立即移除你的皮带.训练师稍后会脱掉皮带; 当你需要它时,仍无法保证狗会在身边.
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |