为了账号安全,请及时绑定邮箱和手机立即绑定

iOS5中强弱存储的说明

iOS5中强弱存储的说明

iOS
红颜莎娜 2019-10-14 14:00:00
我是iOS5开发的新手,并使用Objective-C。我很难理解强存储和弱存储之间的区别。我已经阅读了文档和其他SO问题,但是它们听起来与我完全相同,没有进一步的了解。我阅读了文档:过渡到ARC-引用了iOS4的保留,分配和发布条款;这让我感到困惑。然后,我看一下Open U CS193p,它区分强项和弱项:强:“将其保留在堆中,直到我不再指向它为止” 弱:“只要其他人强烈将其保留,则保留此”这两个定义是否相同=如果指针不再指向对象,则释放保存该对象的内存?我了解指针,内存堆,分配或释放的概念-但是强和弱之间有什么区别?
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

区别在于,一旦没有强大的指针指向该对象,该对象将被释放。即使弱指针指向它,一旦最后一个强指针消失,该对象也将被释放,并且所有剩余的弱指针将被清零。

也许有个例子。

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

强壮的指针就像拴在狗身上的皮带。只要您将皮带拴在狗上,狗就不会跑开。如果有五个人将皮带拴在一只狗上(五个强力指针指向一个物体),则只有将所有五个皮带分开后,狗才会逃跑。

另一方面,弱指针就像小孩指着狗说:“看!狗!” 只要那只狗仍系在皮带上,小孩子仍然可以看见它,他们仍会指向它。但是,一旦所有的皮带都松开了,无论有多少小孩指向它,狗都会跑开。

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


查看完整回答
反对 回复 2019-10-14
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

另一个例子:学生是Object,假设她/他deallocate只要完成所有核心课程(strong pointers)就可以毕业(),无论她/他是否修读可选课程(weak pointers)。换句话说:强指针是该指针释放的唯一因素Object


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 400 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信