ios中的强引用,弱引用

强引用一个弱引用的对象 依旧是强引用 例如,数组, 字典。 想要变成弱引用可以使用NSValue的2个方法valueWithNonretainedObject,返回的是一个NSValue对象这个对象不会对这个Object强引用,在通过NSValue的nonretainedObjectValue属性可以拿到这个对象,这样对这个对象 引用就是弱引用。 但是这有一个问题,弱引用应该满足下面2个条件

   1、不会阻止对象释放 (这点做到了)

   2、对象释放后置空 (这点并不满足)

可以通过使用弱引用的容器[NSHashTable weakObjectsHashTable]

[NSPointerArray weakObjectsPointerArray]

[NSPointerArray pointerArrayWithOptions:]来实现

__weak当对象释放后会被置空

__unsafe_unretained当对象释放后不会被置空,野指针(有时候会用到  对象的原地址做一些释放操作)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容