这比其他任何问题都更令人烦恼和表面化,但 Xcode 中的自动完成存在一些一致性问题,如果有人有解决方案,我将不胜感激。
考虑一个协议(protocol) MyProtocol
,它有一个属性和一个方法:
public protocol MyProtocol {
var variable: String { get }
func method()
}
还有一个类A
,它采用了MyProtocol
并实现了要求以符合协议(protocol):
public class A { ... }
extension A: MyProtocol {
public var variable: String { get { return "String from A." } }
public func method() {
print("Method called.")
}
}
问题:
当访问 A
实例的成员时,协议(protocol)方法出现两次,而属性只出现一次:
如果所有内容都记录在代码中,很明显协议(protocol)属性将被隐藏,而协议(protocol)方法在自动完成中仍然可见。这同样适用于协议(protocol)方法的默认实现 - 仍然可见。
使这个问题更加特殊的另一件事是,如果一个实例A
在声明类的同一文件中创建,并且也在同一文件中访问该实例的成员,然后协议(protocol)方法从自动完成中消失:
但是,如果从另一个文件调用同一个实例(现在在全局范围内),则协议(protocol)方法会重新出现在自动完成中。
所以,我的问题是:有人知道如何从自动完成中隐藏重复的协议(protocol)方法吗?
版本:
Xcode: 7.3 (7D175)
swift :2.2
最佳答案
这似乎是一个错误。 rdar://21701167去年提交。
可能是由于:
源自 Xcode 文档更新的重复项
来自第 3 方 Xcode 文档插件的副本
并排安装两个版本的 Xcode
这真的是任何人的猜测。这有点烦人。有时我会得到 3 或 4 个重复项。我使用了两个版本的 Xcode,并且使用了第 3 方文档插件。
关于swift - 防止协议(protocol)方法在自动完成中出现两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332945/