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
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
相关文章推荐
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- Net反射技术应用解决对象不同版本方法不同参数的问题
- Net反射技术应用解决对象不同版本方法不同参数的问题(转)
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- php 方法重写,参数不同,报错: Declaration of should be compatible with that
- Net反射技术应用解决对象不同版本方法不同参数的问题 【转载】
- Swagger2 (4)针对于相同url headers 参数不同映射不同的方法问题(已解决)
- 子类中的方法和父类同名,但是参数不同,是重写(overload)不是覆盖(override)
- 如何在cmd java main方法 传入含有中文的参数乱码问题解决
- springmvc中参数绑定pojo绑定,同个controller的不同方法调用,后一个方法的形参取到request域中的值为null
- 关于laravel5.5控制器方法参数依赖注入原理深度解析及问题修复
- JavaSE8基础 方法重写 返回类型可以不同,兼容就行
- pyspark aggregate函数使用问题(aggregate重写,aggregate中的函数参数限制)
- [转]解决get方法传递URL参数中文乱码问题
- java通过反射,只需要传了类名和参数,就可以根据不同参数的构造方法实例化对象
- js实现调用方法(函数)时可动态传入不同参数个数、模拟实现方法(函数)重载
- Java 子类未重写的方法调用父类还是子类的问题
- java中的void修饰的方法,方法重载,方法参数传递问题
- Java编程关于子类重写父类方法问题的理解