【问题标题】:Extern inheritance duplicate symbol errors, what is going on?外部继承重复符号错误,这是怎么回事?
【发布时间】:2013-02-20 01:15:19
【问题描述】:

我对外部和继承的使用有疑问。我正在使用 X-Code 在 Objective C 中编写一个 iOS 应用程序。

我有两个假设的类 B 和 C,它们都继承自类 A。

现在类 A 在其头文件中导入一个名为 Constraints 的类,如下所示:#import "Constraints.h"。在约束的 .H 标头中,在 @interface Constraints : NSObject 上方但在导入下方声明了各种 extern NSInteger const VAR_NAME 值。在 .M 实现中,外部变量被初始化,例如如下 NSInteger const VAR_NAME = 1。再次将其放置在导入下方但在 @implementation Constraints 行上方。该文件旨在保存应用范围的全局约束。

但是,在执行此操作时,XCode 在构建时会为在约束文件中声明为 extern 的每个变量在 B 类和 C 类中的重复符号报告一个 mach-o-linker 错误。

所以我当时所做的就是从父类 A 中删除类 Constraints 的导入,而是直接将其导入到类 B 和 C 中。但是,我遇到了同样的问题。

我已经在这个桌子上撞了几个小时了,任何帮助都将不胜感激。

【问题讨论】:

    标签: ios objective-c inheritance extern


    【解决方案1】:

    您可以发布产生错误的代码吗?这对我来说似乎是正确的,通常只是由错字引起的。我读过其他帖子,其中人们只是偶然导入了 .m 文件而不是 .h 文件,这通常会导致此错误。

    【讨论】:

    • 感谢您的回复,我会尝试做一个小例子并测试,因为代码很大。
    • 啊,我的简单示例没有问题,所以我的工作方式模型看起来是正确的。子类也需要导入约束类,因为它不是继承的。
    • 我很高兴你能成功。如果我对您有帮助,我们将不胜感激!
    猜你喜欢
    • 2013-04-27
    • 2011-06-14
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多