强引用一个弱引用的对象 依旧是强引用 例如,数组, 字典。 想要变成弱引用可以使用NSValue的2个方法valueWithNonretainedObject,返回的是一个NSValue对象这个对象不会对这个Object强引用,在通过NSValue的nonretainedObjectValue属性可以拿到这个对象,这样对这个对象 引用就是弱引用。 但是这有一个问题,弱引用应该满足下面2个条件
1、不会阻止对象释放 (这点做到了)
2、对象释放后置空 (这点并不满足)
可以通过使用弱引用的容器[NSHashTable weakObjectsHashTable]
[NSPointerArray weakObjectsPointerArray]
[NSPointerArray pointerArrayWithOptions:]来实现
__weak当对象释放后会被置空
__unsafe_unretained当对象释放后不会被置空,野指针(有时候会用到 对象的原地址做一些释放操作)。