如何按值传递引用类型?

时间:2015-04-02 08:34:36

标签: ios swift

几分钟之前,我学习了just started a question,swift中的类实例是引用类型。然而,当我问如何将实例作为副本传递,或者只是在函数内部复制时,似乎没有人知道。所以我的问题是:

是否可以通过值将类对象传递给函数? 如果是的话,怎么做,如果不是,我怎么能用副本呢?

3 个答案:

答案 0 :(得分:2)

无法通过值在Swift中传递类对象。更重要的是,没有制作对象副本的一般方法,因此您需要提供例如适当的初始化者。

答案 1 :(得分:0)

值对象和引用对象用于不同的目的。询问如何按值传递引用对象是绝对没有意义的。但是,很多时候你会传递不可变对象,这意味着对象的引用是的值。

顺便说一下:你不是指"类对象"。你的意思是"一个班级的实例"。在Objective-C中,类本身就是对象。例如,您将alloc消息发送到类对象。

答案 2 :(得分:0)

  

如何按值传递引用类型?

这个问题的答案就像措辞一样,你只是按价值传递它。它对引用类型和值类型的工作方式完全相同。在Swift中未标记为inout的任何参数都是按值传递。

引用类型变量的值是引用,它指向一个对象。按值传递引用时,接收函数会接收此引用的副本,该副本指向同一对象。

在进一步阅读您的问题后,您似乎根本没有询问是否传递了引用类型。相反,你问的是复制对象。当您编写"引用类型"你真正的意思是像#"对象类型",它的值是一个对象,当通过值传递时会产生对象的副本。

Swift没有"对象类型&#34 ;;就像Objective-C和Java没有"对象类型"。拥有一个变量,其值为#34;是一个对象&#34 ;;你只能有一个变量,其值是一个引用"指向一个对象"。您通过这些引用操作对象。语言中没有语法来解除" dereference"对它指向的对象的引用。