我真的新到Swift,我只是读,类通过引用和数组/字符串等被复制。
是通过引用传递与Objective-C或Java中的方式相同的方式,其中你实际上传递“a”引用或者它是否正确传递引用?
Swift中的事物类型
原文链接:https://www.f2er.com/swift/321284.html规则是:
>类实例是引用类型(即,对类实例的引用实际上是一个指针)
>函数是引用类型
>其他都是值类型; “一切”只是指结构的实例和枚举的实例,因为这是所有在Swift。例如,数组和字符串是struct实例。你可以通过使用inout和获取地址,传递一个引用到这些东西(作为一个函数参数),如newacct指出。但类型本身是一个值类型。
什么参考类型意味着你
引用类型对象在实践中是特殊的,因为:
>仅仅分配或传递给函数可以产生对同一对象的多个引用
>对象本身是可变的,即使对它的引用是一个常量(let,显式或隐含)。
>对对象的突变影响该对象,如对它的所有引用所看到的。
这些可能是危险的,所以请密切注意。另一方面,传递引用类型显然是有效的,因为仅复制和传递指针,这是微不足道的。
什么值类型意味着你
显然,传递值类型是“更安全”,并且意味着它说:你不能通过let引用来变换结构实例或枚举实例。另一方面,这种安全是通过单独复制价值实现的,不是吗?这不会使传递值类型可能昂贵吗?
好,是和否。这不是你想象的那么坏。正如Nate Cook所说,传递一个值类型不一定意味着复制,因为let(显式或隐式)保证不变性,所以没有必要复制任何东西。甚至传入var引用并不意味着事情将被复制,只是如果必要,它们可以被复制(因为有一个突变)。文档特别建议你不要让你的裤子扭曲。