这比其他任何事情更令人烦恼和外观问题,但Xcode中的自动完成存在一些一致性问题,如果有人有解决方案,我会非常感激。
考虑一个协议MyProtocol
,它有一个属性和方法:
public protocol MyProtocol {
var variable: String { get }
func method()
}
类A
采用MyProtocol
并实现要求以符合协议:
public class A { ... }
extension A: MyProtocol {
public var variable: String { get { return "String from A." } }
public func method() {
print("Method called.")
}
}
问题:
访问A
实例的成员时,协议方法会显示两次,而属性只显示一次:
如果代码中记录了所有内容,则很明显协议属性会隐藏,而协议方法在自动完成中仍然可见。这同样适用于协议方法的默认实现 - 仍然可见。
使这个问题更加特殊的另一件事是,如果是一个例如A
在声明类的同一文件中创建,并且该实例的成员也在同一文件中访问,然后协议方法从自动完成中消失:
但是,如果从另一个文件调用相同的实例(现在在全局范围内),则协议方法会重新出现在自动完成中。
所以,我的问题是:有人知道如何从自动完成中隐藏重复的协议方法吗?
版本:
Xcode: 7.3 (7D175)
Swift: 2.2
答案 0 :(得分:5)
这似乎是一个错误。 rdar://21701167去年提出了。{/ p>
可能由以下原因引起:
来自Xcode文档更新的重复文件
与第三方Xcode文档插件重复
并排安装两个版本的Xcode
任何人都可以猜到。这有点烦人。有时我会得到3或4个重复。我使用的是两个版本的Xcode,而我使用的是第三方文档插件。