【发布时间】:2019-02-18 15:07:39
【问题描述】:
我有一系列抽象类,我想根据创建的实例执行任务。但是当我尝试使用声明为基类的变量调用该方法时,我得到“静态成员'...'不能用于类型'...'的实例”
部分代码如下所示
class BaseClass{
class func theTask(){
print("do nothing")
}
}
class SubClassA: BaseClass{
class func theTask(){
print("do class A task")
}
}
class SubClassB: BaseClass{
class func theTask(){
print("do class B task")
}
}
变量被声明为我的一个视图控制器的属性,
class SecondViewController: UIViewController {
var theObject: BaseClass = BaseClass()
override func viewDidLoad() {
super.viewDidLoad()
if(mysettings.selectedPort ==1){
theObject = SubClassA()
}else{
theObject = SubClassB()
}
configureUIElements()
}
@IBAction func scanButtonPressed(_ sender: Any) {
let devices = self.theObject.theTask()
}
}
上面写着的那一行
let devices = self.theObject.theTask()
是那个给我错误的人 静态成员“theTask”不能用于“BaseClass”类型的实例
我来自 C++,所以这种编码很常见,但 Swift 似乎不喜欢它。
【问题讨论】:
标签: ios iphone xcode oop swift4.2