防止协议方法在自动完成中显示两次

xou*_*ini 6 xcode autocomplete swift

这比其他任何事情更令人烦恼和美化问题,但Xcode中的自动完成存在一些一致性问题,如果有人有解决方案我会非常感激.


考虑一个协议MyProtocol,它具有属性和方法:

public protocol MyProtocol {
    var variable: String { get }
    func method()
}
Run Code Online (Sandbox Code Playgroud)

并且为了符合协议A而采用MyProtocol并实现要求的类:

public class A { ... }

extension A: MyProtocol {
    public var variable: String { get { return "String from A." } }

    public func method() {
        print("Method called.")
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

访问实例的成员时A,协议方法显示两次,而属性只显示一次:

如果所有内容都记录在代码中,则很明显协议属性会被隐藏,而协议方法在自动完成中仍然可见.这同样适用于协议方法的默认实现 - 仍然可见.

使这个问题更加奇怪的另一件事是,如果A在声明类的同一文件中创建了一个eg实例,并且该实例的成员也在同一个文件中访问,那么协议方法将从自动完成中消失:

但是,如果从另一个文件调用相同的实例(现在在全局范围内),则协议方法会重新出现在自动完成中.

所以,我的问题是:有人知道如何从自动完成隐藏重复的协议方法吗?


版本:

Xcode: 7.3 (7D175)

Swift: 2.2

tym*_*mac 5

这似乎是一个错误.rdar:// 21701167去年提交.

可能是由于:

  • 来自Xcode文档更新的重复项

  • 与第三方Xcode文档插件重复

  • 并排安装两个版本的Xcode

这是任何人的猜测.这有点烦人.有时我会得到3或4个重复.我使用的是两个版本的Xcode,而我使用的是第三方文档插件.