我是新手,如果我问愚蠢的问题,请忽略;)
是否需要将可选值显式设置为nil,如果不再需要它们?如此弱,强大的参考在swift中如何运作?如果必须手动取消初始化常量变量怎么办?由于无法在swift中为正常变量分配nil,有人请告诉我如何操作 . 有什么区别?
var someVar:String? vs var someVar:String!
我看到唯一的区别在于访问它们 . 第一个打印值是可选的,第二个打印值不是,第二个在值为零时抛出异常 . 这只是区别吗?
是否需要将可选值显式设置为nil
不,Automatic Reference Counting自动释放内存 . 除非存在循环引用,例如,在ClassB中强烈引用ClassA,反之亦然 . 此外, Automatic Reference Counting 仅适用于类的实例而不适用于值类型( String , Int , Enum 等) . 这些值类型的内存在其父实例被取消初始化时被释放 .
Automatic Reference Counting
String
Int
Enum
这只是区别吗?
var someVar:String! 创建一个Implicitly Unwrapped Optional,它基本上是 optional ,在访问时会自动解包 . 访问 Implicitly Unwrapped Optional 时 nil 会导致运行时错误 .
var someVar:String!
optional
Implicitly Unwrapped Optional
nil
1 回答
不,Automatic Reference Counting自动释放内存 . 除非存在循环引用,例如,在ClassB中强烈引用ClassA,反之亦然 . 此外,
Automatic Reference Counting
仅适用于类的实例而不适用于值类型(String
,Int
,Enum
等) . 这些值类型的内存在其父实例被取消初始化时被释放 .var someVar:String!
创建一个Implicitly Unwrapped Optional,它基本上是optional
,在访问时会自动解包 . 访问Implicitly Unwrapped Optional
时nil
会导致运行时错误 .