ios - Unowned 引用在取消初始化时是否设置为 'nil'?

标签 ios swift memory-management automatic-ref-counting dealloc

我对 swift 中的这个主题感到困惑,据说无主引用必须始终有一个值并且不能是可选的,也意味着它们不能设置为“nil”....好吧,我刚刚看到了一个程序苹果的 Swift 文档表明,实例“A”具有对实例“B”的无主引用,在实例“B”被取消初始化/释放后立即被取消初始化和释放……当 var 被取消初始化/释放时,不是吗?意思是他们被设置为“零”???实例 B 是可选的,因此确保它可以保存“nil”,但为什么实例“A”在它应该始终具有值的情况下却被取消初始化???

PS:如果这有帮助......实例“B”是一个可选类型,具有对实例“A”的强引用

最佳答案

unowned 引用的要点是持有对您保证(基于您的应用程序逻辑)不会在具有 unowned 的对象之前被释放的内容的弱引用 引用。你可以read more in the documentation .

从某种意义上说,它类似于隐式展开的可选类型(例如 String!)。您是在告诉编译器当它为 nil 时您永远不会访问该值,如果您这样做,您的程序将会崩溃。

关于ios - Unowned 引用在取消初始化时是否设置为 'nil'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33491392/

相关文章:

iOS 11 UINavigationBar 搞砸了

C++列表分配不规则内存

一组字符串的Java对象内存大小

ios - 在 UIViewController 转换中将 CAAnimation 与 View Animation 混合问题

ios - Devise with Facebook Omniauth - 如何使用 API 进行身份验证?

iphone - Cocos2D iPhone - 屏幕坐标 x Sprite 的内部坐标

Swift Firebase 在整个应用程序中重用一个函数

xcode - 如何在 Swift 中断言对象实例化?

arrays - Array<MutableCollection> 的 Swift 扩展不允许 reverse()

swift - deinitialize() 与 deallocate()