所以我正在尝试对我用 swift 编写的代码进行一些润色和分析。我有一堆问题很详细,通过搜索弱引用和强引用等主题很难找到它们。
例如,我没有看到 XCode 提示下面用于 socket 的任何一行。如果有人能解释在保持弱引用和内存管理方面有什么区别,我将不胜感激。
@IBOutlet weak var mapTab : MKMapView?
和
@IBOutlet weak var mapTab : MKMapView!
它只是解包还是改变了引用的性质?
最佳答案
后者是一个隐式展开的可选。无论何时使用它,您都可以将其视为自动隐式为您完成的强制解包。如果强制展开的值是 nil
,这当然会崩溃。
前面的是一个常规的可选项,所以你必须自己明确地处理它的解包。您可以使用 guard let
、if let
、??
等来处理它,或者您可以选择强制解包,明确地,这将行为类似于第一种情况。
关于swift - weak var : test:UIView! 和 outlets 中的 weak var test :UIView? 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296430/