我是iOS5开发的新手,并使用Objective-C。我很难理解强存储和弱存储之间的区别。我已经阅读了文档和其他SO问题,但是它们听起来与我完全相同,没有进一步的了解。我阅读了文档:过渡到ARC-引用了iOS4的保留,分配和发布条款;这让我感到困惑。然后,我看一下Open U CS193p,它区分强项和弱项:强:“将其保留在堆中,直到我不再指向它为止” 弱:“只要其他人强烈将其保留,则保留此”这两个定义是否相同=如果指针不再指向对象,则释放保存该对象的内存?我了解指针,内存堆,分配或释放的概念-但是强和弱之间有什么区别?
3 回答
万千封印
TA贡献1891条经验 获得超3个赞
区别在于,一旦没有强大的指针指向该对象,该对象将被释放。即使弱指针指向它,一旦最后一个强指针消失,该对象也将被释放,并且所有剩余的弱指针将被清零。
也许有个例子。
想象我们的对象是一只狗,那只狗想逃跑(被释放)。
强壮的指针就像拴在狗身上的皮带。只要您将皮带拴在狗上,狗就不会跑开。如果有五个人将皮带拴在一只狗上(五个强力指针指向一个物体),则只有将所有五个皮带分开后,狗才会逃跑。
另一方面,弱指针就像小孩指着狗说:“看!狗!” 只要那只狗仍系在皮带上,小孩子仍然可以看见它,他们仍会指向它。但是,一旦所有的皮带都松开了,无论有多少小孩指向它,狗都会跑开。
一旦最后一个强指针(皮带)不再指向对象,该对象将被释放,所有弱指针将被清零。
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
另一个例子:学生是Object
,假设她/他deallocate
只要完成所有核心课程(strong pointers
)就可以毕业(),无论她/他是否修读可选课程(weak pointers
)。换句话说:强指针是该指针释放的唯一因素Object
。
- 3 回答
- 0 关注
- 400 浏览
添加回答
举报
0/150
提交
取消