[英]Swift Overloading Methods with “With” in name
苹果喜欢使用诸如doThisWithPoint:
和doThisWithTouch:
这样的方法名称,并且我认为-尽管我的XP doThisWithTouch:
,以至于我可能错了-在Swift中,Apple希望您使用doThis(withPoint : CGPoint)
和doThis(withTouch : UITouch)
doThis(withPoint : CGPoint)
进行签名doThis(withTouch : UITouch)
,因此您可以重载方法,并且在创建网桥时,Objective-C接口看起来像doThisWithPoint
但是现在我收到一条错误消息,表明选择器doThis
已经存在。
关于Swift中最佳的命名方法和重载方法的任何解释都将有所帮助。 不仅使它运行的原因,还有惯用的方式。 谢谢!
来自Swift编程语言 :
默认情况下,第一个参数的外部名称被忽略,第二个及后续参数使用其本地名称作为外部名称。
您需要在函数名中包含withPoint
或withTouch
。 在Swift中声明您的方法,如下所示:
class MyObject: NSObject {
func doThisWithPoint(point: CGPoint) {
}
func doThisWithTouch(touch: UITouch) {
}
}
然后,您可以像这样在Objective-C中调用它们:
[myObject doThisWithPoint:point];
[myObject doThisWithTouch:touch];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.