swift - 防止协议(protocol)方法在自动完成中出现两次

标签 swift xcode autocomplete

这比其他任何问题都更令人烦恼和表面化,但 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/

相关文章:

ios - 如何从NSUserDefaults检索数据?

ios - Swift ios导航栏在被滚动隐藏后不会出现

ios - 如何调试 APIService 的代码

html - Chrome 忽略自动完成 ="off"

javascript - 带有预先输入的 Angular 自动完成功能

swift - swift 中的重写是否会替换或修改父类(super class)的属性和方法的当前实现? swift

ios - 应用程序传输安全 key NSAllowsArbitraryLoadsInMedia 在 iOS 10 上未按预期工作

ios - 在 Xcode 5 中,即使 SDK 目录中有 iOS SDK 6.1,如何使用 iOS SDK 7.0 进行构建?

ios - Xcode |提取开发者信息时出错

javascript - JSP 中的自动完成 - 是否可以查询每次输入,而不是提前将所有列表放在脚本上?