weak和assign的区别

weak只能修饰对象

assign可以修饰对象也可以修饰基本数据类型

weak和assign的区别就是可修饰的变量类型不同

assign如果修饰对象,会产生野指针问题,因为修饰对象后指针不会被置空,如果再次向该对象发消息就会崩溃,造成野指针问题。如果修饰的是基本数据类型则不会有此问题。

weak不会产生野指针问题,因为weak修饰的对象释放后指针会被置为nil,之后在给该对象发消息也不会崩溃。

weak表示对象的弱引用,指向但是并不持有该对象,引用计数也不会加1,Runtime 中对该属性进行了相关操作,无需处理,可以自动销毁。weak用来修饰对象,多用于避免循环引用的地方。weak 不可以修饰基本数据类型

此处延深出两个技术点。

weak的底层实现原来。

runtime。

如有问题请与本人联系

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

推荐阅读更多精彩内容