swift2.x不能使用函数重载的问题
2016-03-16 18:33
483 查看
最近在看斯坦福大学ios开发教程时,一边看一边跟着敲代码,结果发现函数不能重载:
错误内容是:
Method ‘performOperation’ with Objective-C selector
‘performOperation:’ conflicts with previous declaration with the same
Objective-C selector
最后在这个博客找到了原因:
这是因为你的viewcontroller 继承了UIViewController.而UIViewController
继承自oc的NSObject. 在swift 中被修饰成@objc class.
那么就必须要遵循oc的selector,在oc中是不支持方法重载的。所以会报上面的错误。这跟使用的Xcode版本有关,白胡子老头使用的版本较低,而我使用的是Xcode7,已经是Swift2了,与之前有好多不同的地方。
在Compiler error: Method with Objective-C selector conflicts with previous declaration with the same Objective-C selector找到了解决办法:
在Xcode7的Swift2中有两种解决方法:
一种是使用@objc(newNameMethod:),如下
func methodOne(par1, par2) {…}
@objc(methodTow:) func methodOne(par1) {…}
另一种是使用 @nonobjc,如下:
func methodOne() {…}
@nonobjc func methodOne() {…}
错误内容是:
Method ‘performOperation’ with Objective-C selector
‘performOperation:’ conflicts with previous declaration with the same
Objective-C selector
最后在这个博客找到了原因:
这是因为你的viewcontroller 继承了UIViewController.而UIViewController
继承自oc的NSObject. 在swift 中被修饰成@objc class.
那么就必须要遵循oc的selector,在oc中是不支持方法重载的。所以会报上面的错误。这跟使用的Xcode版本有关,白胡子老头使用的版本较低,而我使用的是Xcode7,已经是Swift2了,与之前有好多不同的地方。
在Compiler error: Method with Objective-C selector conflicts with previous declaration with the same Objective-C selector找到了解决办法:
在Xcode7的Swift2中有两种解决方法:
一种是使用@objc(newNameMethod:),如下
func methodOne(par1, par2) {…}
@objc(methodTow:) func methodOne(par1) {…}
另一种是使用 @nonobjc,如下:
func methodOne() {…}
@nonobjc func methodOne() {…}
相关文章推荐
- Swift 2.0 自定义cell和不同风格的cell
- Swift - 让程序挂起后,能在后台继续运行任务
- Swift - 委托(delegate)的介绍,及使用样例
- Swift - 闭包的介绍及用法
- IOS开发系列之Swift_UI_TextFIeld
- Swift - 产生不重复数字的随机数生成器
- Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)
- Swift - 使用CGBlendMode改变UIImage颜色
- Swift - final关键字的介绍,以及使用场景
- Swift 学习之二十一:?和 !(详解)
- Swift - 实现单例模式
- Swift - 正则表达式的几种使用方式
- Swift - UISearchController初步学习
- Swift - 设置应用程序图标的提醒个数(右上角小红圈)
- Swift - iOS应用的国际化与本地化
- Swift - 实现发送邮件功能
- 在swift中使用oc文件
- Swift - 实现发送短信的功能
- Swift - 添加、修改、删除通讯录联系人
- 如何使用Instruments诊断App(Swift版)