首页 文章

是否会自动取消初始化可选值?

提问于
浏览
2

我是新手,如果我问愚蠢的问题,请忽略;)

是否需要将可选值显式设置为nil,如果不再需要它们?如此弱,强大的参考在swift中如何运作?如果必须手动取消初始化常量变量怎么办?由于无法在swift中为正常变量分配nil,有人请告诉我如何操作 . 有什么区别?

var someVar:String? vs var someVar:String!

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

1 回答

  • 4

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

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

    这只是区别吗?

    var someVar:String! 创建一个Implicitly Unwrapped Optional,它基本上是 optional ,在访问时会自动解包 . 访问 Implicitly Unwrapped Optionalnil 会导致运行时错误 .

相关问题