美文网首页
iOS中assign为什么不能修饰对象

iOS中assign为什么不能修饰对象

作者: 小小废柴萌 | 来源:发表于2019-07-09 15:05 被阅读0次

    assign常常用来修饰基本数据类型而对象类型则使用weak来修饰的原因:

    1.对象开辟的空间是在堆空间,销毁和创建都由程序员手动去完成。

    2.指针开辟的空间是在栈上,由系统去销毁。

    3.使用assign修饰,当对象销毁时并不会将指针置为nil。

    4.所以当堆空间的对象销毁时指向对象的指针仍然存在,会造成野指针,当访问该对象时会crash报错EXC_BAD_ACCESS。

    5.因为基本数据类型的空间开辟也在栈空间,同样由系统进行销毁,所以不存在野指针的情况。

    6.使用weak修饰对象时当对象销毁时指针也会被置为nil,所以用weak不会造成野指针。

    相关文章

      网友评论

          本文标题:iOS中assign为什么不能修饰对象

          本文链接:https://www.haomeiwen.com/subject/rxpxkctx.html