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

时间:2016-07-12 15:18:57

标签: swift xcode autocomplete

这比其他任何事情更令人烦恼和外观问题,但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

1 个答案:

答案 0 :(得分:5)

这似乎是一个错误。 rdar://21701167去年提出了。{/ p>

可能由以下原因引起:

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

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

  • 并排安装两个版本的Xcode

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