【问题标题】:Function overloding in Swift [duplicate]Swift 中的函数重载
【发布时间】:2015-11-26 21:08:07
【问题描述】:
func performOperation(operation: (Double, Double) -> Double){
    if operandStack.count >= 2 {
        displayValue = operation(operandStack.removeLast(), operandStack.removeLast())
        enter()
    }
}

func performOperation(operation: Double -> Double) {
    if operandStack.count >= 1 {
        displayValue = operation(operandStack.removeLast())
        enter()
    }
}

显示的错误是“Method 'performOperation' with Objective-C selector 'performOperation:' 与先前使用相同 Objective-C 选择器的声明冲突” 此错误显示在第二个函数中。

我想使用两个名称相同但输入类型不同的函数,但 Xcode 显示错误。我该如何纠正错误?

【问题讨论】:

  • 要使其正常工作,您需要更改方法签名。不要只传递一个元组,而是单独传递参数。 (这个问题是由于使用 Cocoa/CocoaTouch 时 objc 运行时兼容层造成的)

标签: ios xcode swift


【解决方案1】:

Objective-C 不支持方法重载。当您继承 UIViewController 时,您继承了 NSObject 并使该类可与 Obj-C 互操作。另一方面,Swift 确实支持重载,这就是为什么当您删除继承时它可以工作。

【讨论】:

  • 我在用 Swift 编码,然后它也显示这个错误
  • 你的类被继承了?
猜你喜欢
  • 2015-12-17
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多