介绍Weak和Assign的区别

1.assign针对基本数据类型

2.weak 比 assign 多了一个功能就是当属性所指向的对象消失的时候(也就是内存引用计数为0)会自动赋值为 nil

3.当weak指向的对象销毁时,自己会变为nil

4.assign 指针所指向的内存被释放(释放并不等于抹除,只是引用计数为0),不会自动赋值 nil ,这样再引用 self.assignPoint 就会导致野指针操作

5.在 ARC 模式下编程时,指针变量一定要用 weak 修饰,只有基本数据类型和结构体需要用 assgin

---------------------------------------------------------------------------------------

1.weak表示的是一个弱引用,这个引用不会增加对象的引用计数,并且在所指向的对象被释放之后,weak指针会被置为nil。避免悬空指针可能产生崩溃的问题。weak引用通常是用于处理循环引用的问题

2.weak和assign都不会影响引用计数,它们修饰的类型也有不同。weak指针在对象释放后会被置为nil,更安全一些

刘汶的总结: 1.weak会自动置为nil,避免循环引用 2.assign不会自动置为nil,会造成野指针

https://juejin.im/entry/579f130f2e958a00665e7bb4

Last updated