Swift:如何指定用于静态方法调用的类候选

时间:2018-11-16 10:56:09

标签: swift inheritance static ambiguous

假设我们有两个这样的 Obj-C 类:

Parent {
   + (void)doSomething {
      NSLog(@"%@", [self messageToDisplay]);
   }

   + (NSString *)messageToDisplay {
      return @"message_parent";
   }
}

Child: Parent {
   + (NSString *)messageToDisplay {
      return @"message_child";
   }
}

Swift 代码:

Child.doSomething()

它会产生此错误,因为Swift不知道要使用哪个候选对象(孩子或父母)。

  

“ doSomething()”的歧义用法   找到了这个候选人(孩子)   找到了这个候选人(父母)

我们如何指定要使用的候选人?

非常感谢。

1 个答案:

答案 0 :(得分:1)

好,知道了。我找到了此问题的原因。我们在父类中有一个名为deleteObjectWithId的ObjC方法,在子类中有一个名为deleteGroupWithId的ObjC方法(顺便说是无用的),它是子类,从Swift调用delete(withId :)方法时,实际上有两个候选方法。非常感谢。