Swift3中的copyWithZone

时间:2018-01-29 17:51:23

标签: ios swift3 copywithzone

我正在尝试将一个函数转换为更新的Swift3版本,但是收到错误。该操作发生在UICollectionViewLayoutAttributes类中,该类称为CircularCollectionViewLayoutAttributes,类开始如下:

class CircularCollectionViewLayoutAttributes: UICollectionViewLayoutAttributes { ...

功能代码:

override func copy(with zone: NSZone? = nil) -> Any {
let copiedAttributes: CircularCollectionViewLayoutAttributes = super.copy(zone) as! CircularCollectionViewLayoutAttributes
copiedAttributes.anchorPoint = self.anchorPoint
copiedAttributes.angle = self.angle
return copiedAttributes

}

我几乎设法改变它,但仍然有一个错误在线:

let copiedAttributes: CircularCollectionViewLayoutAttributes = super.copy(zone) as! CircularCollectionViewLayoutAttributes

说:"参数传递给不带参数的调用"并强调" zone"。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将API从Objective-C桥接到Swift时发生的一个变化是,许多方法名称中的介词已经变成了参数标签。介词后的名词或动词的对象经常被省略并用作内部参数名。 copyWithZone就是其中之一。

以下是Swift中的声明:

func copy(with zone: NSZone? = nil) -> Any

其他示例包括来自prepare(for:)的{​​{1}},来自prepareForSegue的{​​{1}}等。