weak var: test:UIView! 有什么区别?和弱变量test:UIView?在奥特莱斯?

What is the difference between weak var: test:UIView! and weak var test:UIView? in outlets?

所以我正在尝试对用 swift 编写的代码进行一些润色和分析。我有一堆问题很详细,通过搜索弱引用和强引用等主题很难找到它们。

例如,我没有看到 XCode 抱怨下面用于插座的任何一行。如果有人能解释在保持弱引用和内存管理方面有什么区别,我将不胜感激。

@IBOutlet weak var mapTab : MKMapView? 

@IBOutlet weak var mapTab : MKMapView! 

它只是解包还是改变了引用的性质?

后者是一个隐式展开的可选。无论何时使用它,您都可以将其视为自动隐式为您完成的强制解包。如果强制展开的值是 nil.

,这当然会崩溃

前面的是一个常规的可选项,因此您必须自己明确地处理它的解包。您可以使用 guard letif let?? 等来处理它,或者您可以选择明确地强制解包它,其行为类似于第一种情况。