strong and weak 强引用和弱引用的差别

(weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放  ,即使还有weak型指针指向它。

一旦最后一个strong型指针离去 。这个对象将被释放,全部剩余的weak型指针都将被清除。

可能有个样例形容是妥当的。

想象我们的对象是一条狗,狗想要跑掉(被释放)。

strong型指针就像是栓住的狗。

仅仅要你用牵绳挂住狗,狗就不会跑掉。假设有5个人牵着一条狗(5个strong型指针指向1个对象),除非5个牵绳都脱落 ,否着狗是不会跑掉的。

weak型指针就像是一个小孩指着狗喊到:“看!一仅仅狗在那” 仅仅要狗一直被栓着,小孩就能看到狗。(weak指针)会一直指向它。仅仅要狗的牵绳脱落。狗就会跑掉,无论有多少小孩在看着它。

仅仅要最后一个strong型指针不再指向对象。那么对象就会被释放。同一时候全部的weak型指针都将会被清除。

strong就相当于retain属性,而weak相当于assign。仅仅有一种情况你须要使用weak(默认是strong),就是为了避免retain cycles(就是父类中含有子类{父类retain了子类}。子类中又调用了父类{子类又retain了父类}。这样都无法release)


转载自:点击打开链接

posted @ 2019-04-01 19:43  ldxsuanfa  阅读(265)  评论(0编辑  收藏  举报