ios - 为什么 Xcode 不让 outlets unowned 而不是 weak?

标签 ios swift xcode weak-references iboutlet

Xcode 将 outlet 生成为具有隐式展开的弱变量,如下所示:

@IBOutlet weak var nameTextField: UITextField!

我想知道为什么它不只是生成 onowned var,据我所知 - 行为完全相同,但保持类型非可选。这两者有什么区别吗?

weak var foo: UITextField!
unowned var foo: UITextField

最佳答案

weak 变量有一个默认值,即 nil,因此您的代码是合法的,因为 outlet 属性在对象创建时(之前 socket 实际上已连接)。

但是 unowned 变量没有默认值,您的代码将无法编译。试试吧。

而且整个概念都是错误的。 unowned 是指保证独立存在的事物,没有它你就活不下去。 View Controller View 的 subview 不满足这两个条件。

关于ios - 为什么 Xcode 不让 outlets unowned 而不是 weak?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45258587/

相关文章:

macos - OS X Swift 编译器错误 - 段错误

ios - Xcode UI 测试 - 如何在 WebView 中查找和点击()元素

objective-c - 图形图像保存在文本编辑器中?

ios - NSCoding NSKeyedUnarchiver unarchiveObjectWithFile : returning null

ios - 验证服务器上的自动续订订阅收据

ios - 使用 MKZoomScale 调整 MKAnnotationView 的大小 - Swift 2.0

ios - SwiftUI 将 @ToolbarContent 提取到它自己的 var

iphone - UITextView.text 不起作用

ios - RestKit - 使用 CoreData 映射实体 - 响应错误

jquery - iPhone 故障,将 div 完美地移动到上面的 div