iOS 中 assign 和 weak 的区别

assign 和 weak 都是弱引用声明类型 assign常用来修饰 Int 类型数据,weak 常用来修饰 弱饮用对象

weak 声明的变量对象释放后 赋值为nil
assign声明的变量对象释放后不会自动赋值为nil 会造成野指针

weak 只可以修饰对象。如果修饰基本数据类型,编译器会报错-“Property with ‘weak’ attribute must be of object type”。
assign 可修饰对象,和基本数据类型。当需要修饰对象类型时,MRC时代使用unsafe_unretained。当然,unsafe_unretained也可能产生野指针,所以它名字是"unsafe_”。

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

推荐阅读更多精彩内容