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