用 Swift 中使用的 ObjC 编写的消除歧义覆盖方法

Posted

技术标签:

【中文标题】用 Swift 中使用的 ObjC 编写的消除歧义覆盖方法【英文标题】:Disambiguate overriden method written in ObjC used in Swift 【发布时间】:2017-02-04 09:03:24 【问题描述】:

完整代码:https://github.com/minbi/ambiguous-swift

有没有办法消除 Swift 3 中 ObjC 方法的使用歧义? 我需要在 ObjC 中进行修改,以便在 Swift 中的使用尽可能无缝。

Objective C 桥接到 Swift

@interface A
+ (instancetype)singletonA;
@end
@interface B: A
+ (instancetype)singletonB;
@end

在 Swift 3 中的使用。

我不明白为什么这会模棱两可。我从B 调用该方法的事实不是稍微消除了用法的歧义吗?

var b: B! = B.singleton()

错误

Ambiguous use of 'singleton()'

【问题讨论】:

显示足够的代码来重现您的问题。我看不到您显示的代码有任何错误。 很难说刚刚显示的 AB。准备好后更新您的问题。许多读者会检查更新的问题。 我新建了一个项目,把你修改过的代码全部放入项目中,自己猜测补了一些缺失的部分,还是没有错误。如果您真的想解决您的问题,请创建一个可以重现您的问题并显示其完整代码的新项目。 真的吗?我主要在一个新项目中复制了这些行。我会上传到 Github。挂紧。感谢您的帮助。 添加了完整的代码。 Xcode 8.2.1 【参考方案1】:

显然这是一个已知的错误。 Swift 不能很好地处理覆盖方法或属性。

"Ambiguous use of 'propertyName'" error given overridden property with didSet observer

【讨论】:

以上是关于用 Swift 中使用的 ObjC 编写的消除歧义覆盖方法的主要内容,如果未能解决你的问题,请参考以下文章

如果类没有以 `@objc` 为前缀,是不是可以在 Objective-C 项目中使用用 Swift 编写的 pod?

Swift 中的 ObjC 协议实现

spring in action 学习笔记八:用@Primary 或者@Qualifier消除@Autowired引起的歧义现象

_swift_abortRetainUnowned 将 @objc 类捕获为无主时

如何使用 SwiftUI 在 Xcode 中消除 foreach 循环的歧义

swift Swift - 使用@objc推理弃用警告