Compiler error: 写Swift报出 Obj-C 选择器不允许重载
2016-04-08 15:26
453 查看
Compiler error:Method with Objective-C selector conflicts with previous declaration with the same Objective-C selector
在跟着上斯坦福的Developing iOS 8 Apps with Swift 课程,在用Swift重写方法时发生错误,报错代码如下:class ViewController: UIViewContoller { func performOperation(operation: (Double,Double) -> Double){} func performOperation(operation: Double -> Double){} }
然后报出的编译错误是:
Compiler error:
Method with Objective-C selector conflicts with previous declaration with the same Objective-C selector
给出一个解决方法:
Solution:
将其中一个方法 转为私有方法:
private func performOperation(operation: Double -> Double){}
报错原因
Reason
Obj-C不支持方法的重载(Overloading),所以得用不同的方法名来写方法;当方法继承UIViewController,就继承了NSObject,这是Obj-C的类,所以你写相同方法名的时候会报错;
Swift支持方法的重载,所以你不继承Obj-C类时,编译器不报错;
去除UIViewController时的情况不报错 如下:
class ViewController { func performOperation(operation: (Double,Double) -> Double){} func performOperation(operation: Double -> Double){} }
关于Xcode版本与Swift的变化可以看这个链接:
https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/xc6_release_notes.html#//apple_ref/doc/uid/TP40001051-CH4-SW1
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Apple Swift学习教程
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 介绍 Fedora 上的 Swift
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例