我是 swift 新手,如果我问了愚蠢的问题,请忽略;)
如果不再需要可选值,是否需要显式地将它们设置为 nil? Swift 中的弱引用、强引用怎么样? 如果必须手动取消初始化普通变量怎么办?由于无法在 swift 中将 nil 分配给普通变量,请有人让我知道如何做到这一点。 有什么区别?
var someVar:String? vs var someVar:String!
我发现唯一的区别在于访问它们。第一个打印可选值中的值,第二个不打印,第二个在值为 nil 时抛出异常。这只是区别吗?
最佳答案
Is it required to explicitly set optional values to nil
不,Automatic Reference Counting
自动释放内存。除非存在循环引用,例如,在 ClassB 中存在对 ClassA 的强引用,反之亦然。此外,自动引用计数
仅适用于类实例,不适用于值类型(String
、Int
、Enum
、 ETC)。当它们的父实例被取消初始化时,这些值类型的内存将被释放。
Is that only the difference?
var someVar:String!
创建一个 Implicitly Unwrapped Optional
,它基本上是一个可选
,在访问时会自动解开。当 nil
时访问隐式解包可选
会导致运行时错误。
关于ios - 可选值会自动取消初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075358/