Swift Objective-C冲突错误在一台机器上显示,但在另一台机器上不显示

Swift Objective-C冲突错误在一台机器上显示,但在另一台机器上不显示,swift,Swift,在MacBook上,使用Xcode 12.1运行macOS 10.15.7,我用Swift编写了一些类,如下所示: class A { @objc private var value: NSNumber { get { ... } set { ... } } } class B: A { @objc private var value: String { get { ... } set { ... }

在MacBook上,使用Xcode 12.1运行macOS 10.15.7,我用Swift编写了一些类,如下所示:

class A {
    @objc private var value: NSNumber {
        get { ... }
        set { ... }
    }
}

class B: A {
    @objc private var value: String {
        get { ... }
        set { ... }
    }
}
属性被标记为@objc,因此我可以将输入绑定到它。代码编译和运行都很好,没有问题,输入正确绑定到任何一个类的值,我将其提交到我的存储库中

我后来在iMac上检查了存储库,该存储库也运行macOS 10.15.7和Xcode 12.1,它拒绝编译,出现以下错误:

使用Objective-C选择器“value”的“value”的Getter与使用相同Objective-C选择器的超类“A”的“value”的Getter冲突

具有Objective-C选择器“setValue:”的“value”的Setter与具有相同Objective-C选择器的超类“A”中的“value”的Setter冲突


为什么我在一台计算机上得到错误,而不是在另一台计算机上,使用完全相同的项目和软件??我确信我可以以某种方式重新编写它以避免错误,但这样做会很烦人,特别是当我真的不明白为什么要重新编写它时,因为它可以在一台机器上正常工作。

相比之下,我预计会出现编译器错误。–您是否尝试清理第一台计算机上的构建?它还能编译吗?@MartinR我不是一个敏捷的专家,所以虽然我不知道事情是否应该出错,但关于它为什么不应该出错,我唯一的论点是我已经将它们标记为私有,所以(在我看来)它们不应该对彼此产生任何影响。但是,是的,我已经在第一台计算机上完成了一个干净的构建,它仍然可以工作。比较一下,我预计会出现编译器错误您是否尝试清理第一台计算机上的构建?它还能编译吗?@MartinR我不是一个敏捷的专家,所以虽然我不知道事情是否应该出错,但关于它为什么不应该出错,我唯一的论点是我已经将它们标记为私有,所以(在我看来)它们不应该对彼此产生任何影响。但是,是的,我在第一台计算机上做了一个干净的构建,它仍然可以工作。