assign与weak,它们都是弱引用声明类型,最大的区别在那呢?
如果用weak声明的变量在栈中就会自动清空,赋值为nil。
如果用assign声明的变量在栈中可能不会自动赋值为nil,就会造成野指针错误!
他们常用在基本类型属性,比如BOOL,int等,还有就是delegate。
在使用delegate时,需要注意,非ARC时是使用assign,但到了ARC时代,都建议使用weak,这样更安全。
assign与weak,它们都是弱引用声明类型,最大的区别在那呢?
如果用weak声明的变量在栈中就会自动清空,赋值为nil。
如果用assign声明的变量在栈中可能不会自动赋值为nil,就会造成野指针错误!
他们常用在基本类型属性,比如BOOL,int等,还有就是delegate。
在使用delegate时,需要注意,非ARC时是使用assign,但到了ARC时代,都建议使用weak,这样更安全。
本文标题: iOS中assign和weak修饰符的区别
本文链接:https://www.haomeiwen.com/subject/nqhmittx.html
网友评论