Apple喜欢使用doThisWithPoint:
和doThisWithTouch:
这样的方法名称,我想 - 尽管我有这么小的XP,我可能错了 - 在Swift Apple中你希望你用{进行签名{1}}和doThis(withPoint : CGPoint)
因此您可以重载方法,并且在创建桥时,Objective-C接口看起来像doThis(withTouch : UITouch)
但现在我收到错误,说明了选择器{{ 1}}已经存在。
关于在Swift中命名和重载方法的最佳方法的任何解释都会有所帮助。不仅是它运行的原因,还有什么是惯用的方式。谢谢!
答案 0 :(得分:1)
来自The Swift Programming Language:
默认情况下,省略第一个参数的外部名称,第二个和后续参数使用其本地名称作为外部名称。
您需要将withPoint
或withTouch
作为功能名称的一部分。像Swift一样在Swift中声明你的方法:
class MyObject: NSObject {
func doThisWithPoint(point: CGPoint) {
}
func doThisWithTouch(touch: UITouch) {
}
}
然后你可以在Objective-C中调用它们:
[myObject doThisWithPoint:point];
[myObject doThisWithTouch:touch];
答案 1 :(得分:0)
我为您找到了这个:Overload problem 1和Overload problem 2如果您对方法使用不同的名称,可以使用一个解决方案。
要解决此问题,请使用不同的名称:如func perform1(operation:Type)和func perform2(operation:otherType)。