ios - 可选值会自动取消初始化吗?

标签 ios swift swift2

我是 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 的强引用,反之亦然。此外,自动引用计数仅适用于类实例,不适用于值类型(StringIntEnum、 ETC)。当它们的父实例被取消初始化时,这些值类型的内存将被释放。

Is that only the difference?

var someVar:String! 创建一个 Implicitly Unwrapped Optional ,它基本上是一个可选,在访问时会自动解开。当 nil 时访问隐式解包可选会导致运行时错误。

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

相关文章:

ios - 将 UIImagePickerController 的外观设置回默认值

ios - 如何将 deviceToken 字符串传递给 'webViewDidFinishLoad' ?

ios - 所有数据都显示在一行中

ios - CMSampleBuffer 中的 UIImage 呈蓝色

ios - 在属性标签上获取动态类型

ios - 我可以检测 iPhone 是否启用了模糊功能吗?

ios - 将 UIViewcontroller 加载到比屏幕小的 s​​crollView 中?

xcode - 在 Swift 中的类之间传递变量

Swift:Force Unwrapped 返回 nil 而不会崩溃

ios - 如何以编程方式在 ScrollView 中嵌入堆栈 View