我收到一个奇怪的错误,说明二进制运算符' - '不能应用于我正在开发的应用程序的最新版本中的两个CGPoint操作数。这非常令人困惑,因为我知道它可以应用,因为我在此应用程序的先前版本中运行了相同的代码行。我试图通过重写项目并解决相同的问题来解决错误。导致问题的代码行是这样的:
func updateRKnobWithPosition(position:CGPoint) {
var positionToCenter = position - baseCenter
var direction: CGPoint
if positionToCenter == CGPointZero {
direction = CGPointZero
} else {
direction = positionTOCenter.normalized()
}
...
delegate?.analogRControlPositionChanged(self, position: relativePosition)
}
其中relativePosition是类中的CGPoint。
谁能告诉我这里哪里出错了?如果它不是我的代码,它是否与Xcode有关?
由于
答案 0 :(得分:3)
也许你之前没有正确使用它。
但如果你坚持认为它之前确实正常工作,那么也许有人或某个图书馆有一个适用于CGPoint
的操作员功能
您可以按如下方式创建操作员功能
func - (first: CGPoint, second: CGPoint) -> CGPoint {
return CGPointMake(first.x - second.x, first.y - second.y)
}
答案 1 :(得分:1)
通过查看CGPoint
的文档,可以快速解释您的问题。它被定义为:
struct CGPoint { var x: CGFloat var y: CGFloat init() init(x x: CGFloat, y y: CGFloat) }
所以,你要求它从另一个结构中减去一个结构,它不知道如何去做。 :)
问题是你在iOS和Mac库中所做的大部分工作都是面向对象的,但图形库主要是C代码,而不是带有重载运算符的对象。 :)