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

32

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

继承自非协议、非类类型“CGPoint”

我不知道为什么这是不可能的。我的类只有这么简单:

import UIKit

class IYAttachPoint: CGPoint {

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

}

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

3个回答

36

这是不可能的,因为您想要从类中继承一个结构体。 CGPoint 是一个结构体,因此它不支持继承,尽管它可以遵循协议。

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

class IYAttachPoint {

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

非常感谢,这会对我有所帮助 :) - Philip Müller

3

你不能从结构体继承类。结构体不支持继承。 但如果你想,你可以使用结构体的扩展。


0
你收到的错误信息已经告诉你出了什么问题。唯一可以用作基类的是类,你也可以让你的类/结构体/枚举符合协议,但只有类才能用于继承。由于 CGPoint 是一个结构体,所以它不能用于子类化的目的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接