【问题标题】:Inheritance from non-protocol, non-class type 'CGPoint'从非协议、非类类型 'CGPoint' 继承
【发布时间】:2014-10-25 17:29:45
【问题描述】:

我想创建一个自定义的 CGPoint 子类来添加一些属性,但是我得到了这个错误:

从非协议、非类类型'CGPoint'继承

我不知道为什么这是不可能的。我的课就这么简单:

import UIKit

class IYAttachPoint: CGPoint {

  var holder: String = "No holder"
  var unavailable: Bool = false

}

我尝试添加一些库,如 CoreGraphics 或 QuartzCore,但没有成功。如果这个问题已经有一些问题或解决方案,请指出正确的方向。

【问题讨论】:

    标签: swift cgpoint


    【解决方案1】:

    这是不可能的,因为你想从一个类继承一个结构。 CGPoint 是一个结构体,因此它不支持继承,尽管它可以符合协议。

    如果您真的想这样做,请使用组合而不是继承。

    class IYAttachPoint {
    
      var point:CGPoint?
      var holder: String = "No holder"
      var unavailable: Bool = false
    }
    

    【讨论】:

    • 非常感谢,这将帮助我:)
    【解决方案2】:

    您不能从 Structure 继承类。结构不支持继承。 但如果你愿意,你可以使用结构扩展。

    【讨论】:

      【解决方案3】:

      您收到的错误消息正在告诉您究竟出了什么问题。唯一可以用作基类的东西就是类。您还可以让您的类/结构/枚举符合协议,但只有类可以用于继承。由于 CGPoint 是一个结构,它不能用于子类化目的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        • 1970-01-01
        • 1970-01-01
        • 2015-01-09
        相关资源
        最近更新 更多