最新的assign与weak的区别 看不明白你打我

1 能否产生野指针的区别

weak 修饰的变量使用之后,不会产生野指针,因为其指向的数据清空时,变量会自动置空。 weak是安全的。
assign 修饰的变量使用之后如果没有置空,可能会产生野指针。

2 修饰对象类型的区别

首先数据分为 对象类型(object) 和 非对象类型(CGFLoat,NSInteger)
weak 只可以修饰对象。(如果你修饰非对象类型,编译器会报错)
assign 只修饰非对象类型。 当需要修饰对象类型时,MRC时代使用unsafe_unretained。当然,unsafe_unretained也可能产生野指针,所以它名字是"unsafe_***"。现在就用weak基本没问题了。

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

推荐阅读更多精彩内容