gpt4 book ai didi

memory-management - iOS5中强存储和弱存储的解释

转载 作者:行者123 更新时间:2023-12-03 04:39:07 24 4
gpt4 key购买 nike

我是 iOS5 开发和使用 Objective-C 的新手。我无法理解存储和存储之间的区别。我已阅读文档和其他 SO 问题,但它们对我来说听起来都相同,没有进一步的见解。

我读到the documentation: Transitioning To ARC - 它引用了 iOS4 的保留、分配和释放条款;这让我很困惑。然后我研究了 Open U CS193p,它区分强弱:

Strong: "keep this in the heap until I don't point to it anymore"
Weak: "keep this as long as someone else points to it strongly"

这两个定义不是相同的吗=如果指针不再指向对象,则释放保存该对象的内存?我理解指针、堆、内存分配或释放的概念 - 但强和弱之间有什么区别?

最佳答案

不同之处在于,一旦没有strong指向对象的指针,该对象就会被释放。即使弱指针指向它,一旦最后一个强指针消失,该对象将被释放,所有剩余的弱指针将被清零。

也许可以举一个例子。

想象我们的对象是一只狗,并且狗想要逃跑(被释放)。

强指针就像拴狗的皮带。只要你给狗拴上皮带,狗就不会逃跑。如果五个人将皮带拴在一只狗身上(五个强指针指向一个物体),那么直到所有五个皮带都松开后,狗才会逃跑。

另一方面,弱指针就像 child 子指着狗说“看!一只狗!”只要狗仍然拴在皮带上, child 子仍然可以看到狗,他们仍然会指着它。然而,一旦所有的皮带都被松开,无论有多少 child 指着它,狗都会逃跑。

一旦最后一个强指针(约束)不再指向某个对象,该对象将被释放,所有弱指针将被清零。

关于memory-management - iOS5中强存储和弱存储的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9262535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com