weak只能修饰对象
assign可以修饰对象也可以修饰基本数据类型
weak和assign的区别就是可修饰的变量类型不同
assign如果修饰对象,会产生野指针问题,因为修饰对象后指针不会被置空,如果再次向该对象发消息就会崩溃,造成野指针问题。如果修饰的是基本数据类型则不会有此问题。
weak不会产生野指针问题,因为weak修饰的对象释放后指针会被置为nil,之后在给该对象发消息也不会崩溃。
weak表示对象的弱引用,指向但是并不持有该对象,引用计数也不会加1,Runtime 中对该属性进行了相关操作,无需处理,可以自动销毁。weak用来修饰对象,多用于避免循环引用的地方。weak 不可以修饰基本数据类型
此处延深出两个技术点。
weak的底层实现原来。
runtime。
如有问题请与本人联系