【发布时间】:2020-08-19 16:50:19
【问题描述】:
如果A被声明为unowned var然后被释放,当另一个对象试图访问A时会发生什么?
【问题讨论】:
标签: ios memory-management automatic-ref-counting
如果A被声明为unowned var然后被释放,当另一个对象试图访问A时会发生什么?
【问题讨论】:
标签: ios memory-management automatic-ref-counting
无主引用,如弱引用,不会增加被引用对象的保留计数。然而,在 Swift 中,一个无主引用有一个额外的好处,那就是它不是一个 Optional。这使它们更易于管理,而不是诉诸于使用可选绑定。这与隐式展开的选项没有什么不同。此外,无主引用是非归零的。这意味着当对象被释放时,它不会将指针归零。这意味着在某些情况下,使用无主引用会导致指针悬空。在 Objective-C 世界中,无主引用映射到 unsafe_unretained 引用。
所以,它会引发Fatal Error 之类的:
致命错误:尝试读取无主引用但对象 X 已被释放
作为signal SIGABRT
【讨论】: