我开始学习 Swift 语言,但在理解协议、结构和类方面遇到了困难。
我来自 Android 方面的编程,所以我相信 Swift 协议基本上是 Java 接口?
其中每一个的正确用例是什么?
这些类比并不“完全”正确,但这就是我所理解的要点
是的,协议实际上就像接口一样
类就是类,就像 Java/Android 以及几乎任何其他语言中的类一样
结构类似于类,但当它们从一个变量/函数传递到另一个变量/函数时,它们是按值传递(复制)的。
如果您完全熟悉 C#,它的结构实现非常相似。
Eg:
class Foo {
...
}
let x = Foo()
let z = x
此时x和z在内存中都引用同一个Object,只有一个Foo
object
struct Bar {
...
}
let a = Bar()
let b = a
当分配 b 时,a 被复制(想想基本上复制内存块)。此时,有两个独立的Bar
内存中的对象,修改一个对象不会影响另一个对象。
为什么这有用?有时您不需要共享引用,但主要是出于性能原因。因为结构体不必全部引用同一个对象,所以它们不必在堆上分配。相反,它们通常可以分配在堆栈上,即much快点。此外,结构数组可以实现为一大块连续的内存,这意味着如果您想遍历所有结构,它对 CPU 缓存会更加友好。
Swift 不会进行垃圾收集,但对于像 C# 这样的垃圾收集语言来说,这可能意味着垃圾收集器不必处理大量本来可能需要处理的对象。即使在快速结构复制也意味着它可以避免这样做Retain
/Release
ARC 所需的幕后工作,这可以提供很大帮助。
结构体的主要用例是当您有大量不可变的“简单数据”,例如 Vector(3 个浮点值的集合)时
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)