【发布时间】:2017-08-17 14:59:50
【问题描述】:
我对面向协议的编程很陌生,所以我的问题可能很简单。
我打算定义一个具有 clone() 方法的 Cloneable 协议。此方法返回内容与调用 clone() 方法的对象的内容相同的对象。因此,clone() 方法的返回类型必须适应采用 Cloneable 协议的类。
protocol Cloneable{
func clone() -> AnyObject
}
public final class Circle : Cloneable{
private var radius : Double
private var area : Double
private var perimeter : Double
public init( radius : Double ){
self.radius = radius
area = PI * radius * radius
perimeter = 2 * PI * radius
}
public convenience init(){
self.init( radius : 1.0 )
}
func clone() -> Circle{
return Circle( radius : self.radius )
}
}
我收到 Class Circle 不符合 Cloneable 协议的错误。 它要我用 Circle 改变 AnyObject。如果我这样做,该协议如何用于所有类?
【问题讨论】: