繁体   English   中英

快速重载方法,名称中带有“ With”

[英]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编程语言

默认情况下,第一个参数的外部名称被忽略,第二个及后续参数使用其本地名称作为外部名称。

您需要在函数名中包含withPointwithTouch 在Swift中声明您的方法,如下所示:

class MyObject: NSObject {    
    func doThisWithPoint(point: CGPoint) {
    }
    func doThisWithTouch(touch: UITouch) {
    }
}

然后,您可以像这样在Objective-C中调用它们:

[myObject doThisWithPoint:point];
[myObject doThisWithTouch:touch];

我为您找到了: 重载问题1重载问题2如果您对方法使用不同的名称,则可能是一种解决方案。

要解决此问题,请使用不同的名称:如func perform1(操作:类型)和func perform2(操作:otherType)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM