您的位置:首页 > 移动开发 > Swift

swift 重写方法不同参数同方法名问题

2015-04-25 19:19 316 查看
看了stanford大学的公开课视频,按照上面的范例敲了一遍,发现有错误

method"performOperation" with Objective-c selector"performOperation:"conflicts with previous declaration
with the same Obejctive-c selector.

func performOperation(operation: (Double, Double) ->Double){
if operAndStack.count >= 2{
displayValue = operation(operAndStack.removeLast(), operAndStack.removeLast())
enter()
}
}

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

这是因为viewController继承自UIViewController,而oc不支持方法重载。在swift中是支持方法重载的, 只要返回值及参数类型,参数个数不同就可以。还有就是要注意外部形参名的情况,外部形参名也可以作为方法重载的一个重要的判断。
解决方法:一、删除继承oc,显示不可能,所以只能用private修饰。

  二、更改方法名。

参考:http://stackoverflow.com/questions/29457720/compiler-error-method-with-objective-c-selector-conflicts-with-previous-declara

           http://www.cocoachina.com/bbs/read.php?tid=297461#1290696
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐