对Strong 与 Weak的理解

在内存管理中,他们两个都是针对于对象的,都不能应用到基本数据类型,(对于基本数据类型,使用assign就行了,不需要进行内训管理)。
所有的指针变量默认是__strong类型,所有通常不写;如果一个对象的强引用结束之后,即使存在弱引用,这个对象也会被释放掉,同时,它的若引用被置为nil

打个比方强引用就相当于狗链子,将狗拴住,弱引用就相当于一个小孩指向这条狗的手指,如果狗链子没了,狗自然就跑了(释放),这是小孩的指向狗得到手指也就收回了(弱指针被设置为nil);


小结
1、使用关系有两种主要的类型:strong 和 weak ,相当于ARC环境下的retain 和 assign 。只要存在强引用,对象就不会被释放掉;
2、OC中,一直存在循环引用的问题,但是实际应用中很少出现循环引用的问题,过去使用assign属性的地方,在ARC环境下,要使用weak代替。大部分的循环引用是由委托(delegate)引起的,所有应该将delegate属性声明为weak。当引用兑现被销毁时,weak引用会被置为nil,如果使用assign指向被释放掉的内存,会导致程序崩溃;


空指针:没有存储任何内存地址的指针,
野指针:所指对象被销毁,所占用的内存已经是垃圾内存


你可能感兴趣的:(对Strong 与 Weak的理解)