swift - 协议(protocol)中的方法

标签 swift protocols

我对面向协议(protocol)的编程非常陌生,所以我的问题可能很简单。

我打算定义一个具有clone()方法的Cloneable协议(protocol)。该方法返回的对象的内容与调用clone()方法的对象的内容相同。因此,clone()方法的返回类型必须调整为采用Cloneable协议(protocol)的类。

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 协议(protocol)。 它要我用 Circle 更改 AnyObject。如果我这样做,这个协议(protocol)如何用于所有类?

最佳答案

更改此代码 -

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

这段代码 -

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

关于swift - 协议(protocol)中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45728453/

相关文章:

swift - Realm 中的混合列表

ios - 如何使某些协议(protocol)方法仅适用于特定的 iOS 版本?

python - Twisted 和 p2p 应用程序

swift - 专门的通用协议(protocol)只能作为通用约束

ios - 创建符合另一个协议(protocol)的协议(protocol)变量

ios - cellForRowAt 在 childTableView 中不起作用

swift - 如何使几何形状跟随曲线?

swift - 如何等待完成处理程序完成?调度组?

ios - 在 iOS 中开始在 TextField 中输入时,PlaceHolder 会显示动画

xamarin.ios - Xamarin iOS 绑定(bind) - 协议(protocol) - 无法创建抽象类的实例