【问题标题】:Swift Overloading Methods with "With" in name名称为“With”的 Swift 重载方法
【发布时间】:2015-11-30 07:44:01
【问题描述】:

Apple 喜欢使用 doThisWithPoint:doThisWithTouch: 之类的方法名称,我想——尽管我的 XP 太少,我可能错了——在 Swift 中,Apple 希望你使用 doThis(withPoint : CGPoint) 和 @ 进行签名987654324@ ,所以你可以重载方法,当桥创建时,Objective-C 接口看起来像doThisWithPoint 但现在我收到一个错误,说选择器doThis 已经存在。

任何关于在 Swift 中命名和重载方法的最佳方式的解释都会有所帮助。不仅是什么让它运行,而且它的惯用方式是什么。谢谢!

【问题讨论】:

    标签: objective-c swift


    【解决方案1】:

    来自The Swift Programming Language

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

    您需要在函数名称中包含withPointwithTouch。像这样在 Swift 中声明你的方法:

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

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

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

    【讨论】:

      【解决方案2】:

      我为你找到了这个:Overload problem 1 和这个Overload problem 2 如果你对方法使用不同的名称,一个解决方案可以是。

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

      【讨论】:

        猜你喜欢
        • 2015-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 1970-01-01
        • 1970-01-01
        • 2014-09-14
        • 1970-01-01
        相关资源
        最近更新 更多