我是新手,请不要问我愚蠢的问题;)

如果不再需要可选值,是否需要将可选值显式设置为nil?
弱而有力的参考如何迅速起作用?
如果必须手动取消初始化普通变量怎么办?由于无法快速将nil分配给普通变量,因此请有人告诉我该怎么做。
之间有什么区别?

var someVar:String? vs var someVar:String!

我看到的唯一区别是访问它们。第一个在可选值内打印值,第二个不打印值,第二个在值为nil时抛出异常。那只是区别吗?

最佳答案

是否需要将可选值显式设置为nil

不, Automatic Reference Counting 自动释放内存。除非有循环引用,否则在ClassB中强烈引用ClassA,反之亦然。同样,Automatic Reference Counting仅适用于类的实例,而不适用于值类型(StringIntEnum等)。这些值类型的内存在其父实例被取消初始化时被释放。

那只是区别吗?
var someVar:String!创建一个 Implicitly Unwrapped Optional ,基本上是一个optional,在访问时会自动解包。当它是Implicitly Unwrapped Optional时访问nil会导致运行时错误。

关于ios - 可选值会自动取消初始化吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38075358/

10-10 20:38