用 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()'
【问题讨论】:
显示足够的代码来重现您的问题。我看不到您显示的代码有任何错误。 很难说刚刚显示的A
和 B
。准备好后更新您的问题。许多读者会检查更新的问题。
我新建了一个项目,把你修改过的代码全部放入项目中,自己猜测补了一些缺失的部分,还是没有错误。如果您真的想解决您的问题,请创建一个可以重现您的问题并显示其完整代码的新项目。
真的吗?我主要在一个新项目中复制了这些行。我会上传到 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?
spring in action 学习笔记八:用@Primary 或者@Qualifier消除@Autowired引起的歧义现象
_swift_abortRetainUnowned 将 @objc 类捕获为无主时