协议中的方法

时间:2017-08-17 06:56:48

标签: swift protocols

我对面向协议的编程很新,所以我的问题可能很简单。

我打算定义一个具有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。如果我这样做,该协议如何用于所有类?

1 个答案:

答案 0 :(得分:0)

更改此代码 -

func clone() -> Circle{
   return Circle( radius : self.radius )
}

到此代码 -

 func clone() -> AnyObject {
    return Circle( radius : self.radius )
 }