swift中的条件绑定是按值传递还是按引用传递?

swift中的条件绑定是按值传递还是按引用传递?,swift,Swift,在条件绑定从watch加速计返回无效(但非nil)对象时,我遇到了一些问题。我在想也许复制一个对象可以帮助解决这个问题,但我不确定这是否已经发生了。如果我使用以下代码: if let data = recorder.accelerometerData(from: startDate, to: endDate){...} 这是否已经创建了CMSensorDataList对象的副本,或者我只是获取了对它的引用?这取决于由可选项包装的类型是值类型还是引用类型。如果是引用类型,它显然是通过引用传递的。

在条件绑定从watch加速计返回无效(但非nil)对象时,我遇到了一些问题。我在想也许复制一个对象可以帮助解决这个问题,但我不确定这是否已经发生了。如果我使用以下代码:

if let data = recorder.accelerometerData(from: startDate, to: endDate){...}

这是否已经创建了CMSensorDataList对象的副本,或者我只是获取了对它的引用?

这取决于由可选项包装的类型是值类型还是引用类型。如果是引用类型,它显然是通过引用传递的。如果值类型为,则复制它(除非CoW,写入时复制,在这种情况下,如果它发生变异,则复制它)

在本例中,是一个类,因此它是对该实例的引用,而不是它的副本