iOS5中强弱存储的说明

我是iOS5开发的新手,并使用Objective-C。我很难理解强存储和弱存储之间的区别。我已经阅读了文档和其他SO问题,但是它们听起来与我完全相同,没有进一步的了解。


我阅读了文档:过渡到ARC-引用了iOS4的保留,分配和发布条款;这让我感到困惑。然后,我看一下Open U CS193p,它区分强项和弱项:


强:“将其保留在堆中,直到我不再指向它为止” 

弱:“只要其他人强烈将其保留,则保留此”


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


红颜莎娜
浏览 401回答 3
3回答

万千封印

区别在于,一旦没有强大的指针指向该对象,该对象将被释放。即使弱指针指向它,一旦最后一个强指针消失,该对象也将被释放,并且所有剩余的弱指针将被清零。也许有个例子。想象我们的对象是一只狗,那只狗想逃跑(被释放)。强壮的指针就像拴在狗身上的皮带。只要您将皮带拴在狗上,狗就不会跑开。如果有五个人将皮带拴在一只狗上(五个强力指针指向一个物体),则只有将所有五个皮带分开后,狗才会逃跑。另一方面,弱指针就像小孩指着狗说:“看!狗!” 只要那只狗仍系在皮带上,小孩子仍然可以看见它,他们仍会指向它。但是,一旦所有的皮带都松开了,无论有多少小孩指向它,狗都会跑开。一旦最后一个强指针(皮带)不再指向对象,该对象将被释放,所有弱指针将被清零。

一只萌萌小番薯

另一个例子:学生是Object,假设她/他deallocate只要完成所有核心课程(strong pointers)就可以毕业(),无论她/他是否修读可选课程(weak pointers)。换句话说:强指针是该指针释放的唯一因素Object。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS