【问题标题】:What happens when an object tries to access deallocated unowned object?当一个对象试图访问已释放的无主对象时会发生什么?
【发布时间】:2020-08-19 16:50:19
【问题描述】:

如果A被声明为unowned var然后被释放,当另一个对象试图访问A时会发生什么?

【问题讨论】:

    标签: ios memory-management automatic-ref-counting


    【解决方案1】:

    无主引用,如弱引用,不会增加被引用对象的保留计数。然而,在 Swift 中,一个无主引用有一个额外的好处,那就是它不是一个 Optional。这使它们更易于管理,而不是诉诸于使用可选绑定。这与隐式展开的选项没有什么不同。此外,无主引用是非归零的。这意味着当对象被释放时,它不会将指针归零。这意味着在某些情况下,使用无主引用会导致指针悬空。在 Objective-C 世界中,无主引用映射到 unsafe_unretained 引用。

    所以,它会引发Fatal Error 之类的:

    致命错误:尝试读取无主引用但对象 X 已被释放

    作为signal SIGABRT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 2020-01-02
      • 2013-10-13
      • 1970-01-01
      相关资源
      最近更新 更多