我刚刚从 swift 1.1 更新到 swift 1.2 并得到编译器错误:
Method 'setVacation' redeclares Objective-C method 'setVacation:'
这里有一些代码:
var vacation : Vacation?
func setVacation(_vacation : Vacation)
{...}
但我需要打电话setVacation
有什么建议如何解决这个问题吗?
这是由 Xcode 6.3beta 发行说明中所述的更改引起的:
Swift 现在可以检测重载和覆盖之间的差异
Swift 类型系统以及通过以下方式看到的有效行为
Objective-C 运行时。 (18391046, 18383574) 例如,以下
类中“属性”的 Objective-C setter 之间的冲突
现在诊断其扩展中的“setProperty”方法:
class A : NSObject {
var property: String = "Hello" // note: Objective-C method 'setProperty:’
// previously declared by setter for
// 'property’ here
}
extension A {
func setProperty(str: String) { } // error: method ‘setProperty’
// redeclares Objective-C method
//'setProperty:’
}
要解决此问题,您需要使所有方法签名唯一(因为 Objective-C 不提供方法重载)
或者不继承自NSObject
如果你只需要 Swift 类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)