1 能否产生野指针的区别
weak 修饰的变量使用之后,不会产生野指针,因为其指向的数据清空时,变量会自动置空。 weak是安全的。
assign 修饰的变量使用之后如果没有置空,可能会产生野指针。
2 修饰对象类型的区别
首先数据分为 对象类型(object) 和 非对象类型(CGFLoat,NSInteger)
weak 只可以修饰对象。(如果你修饰非对象类型,编译器会报错)
assign 只修饰非对象类型。 当需要修饰对象类型时,MRC时代使用unsafe_unretained。当然,unsafe_unretained也可能产生野指针,所以它名字是"unsafe_***"。现在就用weak基本没问题了。