脑子越来越不好了,快忘了,简单整理一下记下喽
我先用a、b、c三个人来解释吧,a是持有者(小偷),b是被持有者(受害者),c是监控(警察),这里的警察比较变态一直监督的是b受害者。。。。。。。
a这个人如果strong持有b对象,(这时候可以理解为a小偷开始盯上受害者b了),这时候c是监视b身份的人,警察c发现b已经被人给盯上了,就在自己的小本本上面计数+1,表示b目前有一个人正在盯着使用。将来在b被释放之前,首先去警察c那里查看一下自己是不是还有被人盯着使用,如果没有了,也就是a小偷放弃b受害者的时候,受害者才可以被释放,如果c警察记录还有人盯着你使用呢,那b就不能被释放。a与b这种关系,就是如果a持有b,那么b就不能释放的状态就是strong强引用状态。只有a释放后,b才能释放。
关于weak使用,咱们通常在代理里面遇见这种情况。比如a让b去买一块糖,然后买回来之后交给a这件事情来举例。
如果老板a对员工b属于强引用的代理会出现下面这种状况(想想也不可能,老板与员工平起平坐平座只有在梦里了。。。),老板a让员工b去买糖了,然后员工b就巴拉巴拉跑到超市去买糖了,当b买糖回来后,发现老板a消失了,这时候员工b疯了,死心眼的他满世界找老板去了,然后程序就崩了。。。。
如果老板a对员工b属于weak的代理,那么情况就会好很多,老板a让员工b去买东西,然后b去买了,回来发现老板还在,就把糖交给a。如果发现老板a消失了,那b也不死心眼了,老板没了就没了吧,生活还是要继续的。
关于assign,只要不带*的,不是代理的,那么我们就全部使用assign就好了。。。。