我一直遇到条件绑定的一些问题,从手表加速度计返回一个无效(但非零)的对象。我想也许制作一个对象的副本可以帮助解决问题,但我不确定这是否已经发生。如果我使用如下代码:
if let data = recorder.accelerometerData(from: startDate, to: endDate){...}
这是否已经创建了CMSensorDataList对象的副本,或者我只是获取对它的引用?
答案 0 :(得分:0)
它只取决于optional选项包含的类型是值类型还是引用类型。如果是引用类型,它显然是通过引用传递的。如果是值类型,则复制它(除非CoW,写时复制,在这种情况下,如果它被突变则复制它)。
在这种情况下,CMSensorDataList
是一个类,所以它是对该实例的引用,而不是它的副本。