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_”。
网友评论