我是新手,请不要问我愚蠢的问题;)
如果不再需要可选值,是否需要将可选值显式设置为nil?
弱而有力的参考如何迅速起作用?
如果必须手动取消初始化普通变量怎么办?由于无法快速将nil分配给普通变量,因此请有人告诉我该怎么做。
之间有什么区别?
var someVar:String? vs var someVar:String!
我看到的唯一区别是访问它们。第一个在可选值内打印值,第二个不打印值,第二个在值为nil时抛出异常。那只是区别吗?
最佳答案
是否需要将可选值显式设置为nil
不, Automatic Reference Counting
自动释放内存。除非有循环引用,否则在ClassB中强烈引用ClassA,反之亦然。同样,Automatic Reference Counting
仅适用于类的实例,而不适用于值类型(String
,Int
,Enum
等)。这些值类型的内存在其父实例被取消初始化时被释放。
那只是区别吗?var someVar:String!
创建一个 Implicitly Unwrapped Optional
,基本上是一个optional
,在访问时会自动解包。当它是Implicitly Unwrapped Optional
时访问nil
会导致运行时错误。
关于ios - 可选值会自动取消初始化吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38075358/