xfan001
3/10/2016 - 7:57 AM

iOS的强引用和弱引用.md

FROM:https://gist.github.com/oa414/5329414

#iOS5的强引用和弱引用

http://stackoverflow.com/questions/9262535/explanation-of-strong-and-weak-storage-in-ios5

##Question

在iOS5的ARC增加了两个定义,Strong和Week,而不用像之前一样手动管理内存。斯坦福的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"

这到底是什么名堂?

##Answer

区别是对象会被释放,在没用强引用指向它的时候。即使有弱引用指向它,如果最后一个强引用没了,对象还是会被释放,并且所有存在的弱引用会被置零。

或许举个例子更好。

加入我们的对象是条狗,并且这条狗想逃跑(相当于对象释放)

强引用就像一条栓者狗的绳子。只要你有一条绳子拴者狗,狗就不会逃跑。如果五个人都牵着拴着狗的绳子(五个指向对象的强引用),这条狗就不会逃跑了,除非五条绳子都解开了。 弱

弱引用,就像小孩子指着狗说:看!一条狗!只要狗还被绑着,小孩子就能看到这条狗,就可以指着它。如果所有绳子都被松掉了,无论有多少小孩子指着这条狗,这条狗都会逃跑。

只要最后一个强引用不再指向对象,对象就会被释放,所有的弱引用都会置零。