看了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

本文探讨了在Swift中遇到的方法重载冲突问题,尤其是在继承自Objective-C的类中。通过调整方法签名来解决冲突,并提供了两种解决方案:使用private修饰符限制作用域或更改方法名称。
504

被折叠的 条评论
为什么被折叠?



