【问题标题】:How to fix duplicate symbol error in Objective-C? [duplicate]如何修复 Objective-C 中的重复符号错误? [复制]
【发布时间】:2019-07-06 12:02:27
【问题描述】:

变量在 Constants.h 中

错误是:

duplicate symbol _OSVShortTermFuelTrim1 in:
/Users/loximity/Library/Developer/Xcode/DerivedData/AutoCodesApp-hjoxbttreaujifdypikhbngdqihd/Build/Intermediates/AutoCodesApp.build/Debug-iphonesimulator/AutoCodesApp.build/Objects-normal/i386/ViewController.o
/Users/loximity/Library/Developer/Xcode/DerivedData/AutoCodesApp-hjoxbttreaujifdypikhbngdqihd/Build/Intermediates/AutoCodesApp.build/Debug-iphonesimulator/AutoCodesApp.build/Objects-normal/i386/FuelTrimViewController.o

然后我在视图控制器的两个地方使用上述变量:

OSVShortTermFuelTrim1 = [NSString stringWithFormat:@"%@ %@", [sensor valueStringForMeasurement1:NO], [sensor imperialUnitString]];

在 FuelTrimViewController 中”

fuelBank1.text = [NSString stringWithFormat:@"%@",OSVShortTermFuelTrim1];

【问题讨论】:

  • @dandan78 亲爱的,如果你不能贡献,至少不要让提问的人失望,这怎么可能是重复的?因为我添加了自己的代码 sn-ps。
  • @Adeel One 也可能会说,如果您不了解 SO 的目的,请不要使用它。他们将其标记为重复的原因是因为它是同一类型的问题,而答案可以为您指明正确的方向。你也知道CONSTANT这个词是什么意思吗?当您在constant.h 文件中明确声明它是常量时,为什么要尝试重新分配OSVShortTermFuelTrim1?显然它不是一个常数,因为您希望能够重新分配这些值。此外,常量将用关键字constextern 标记。你的这个constant.h 文件具有误导性。
  • @dandan78 找到答案比写下来更容易,我知道如何使用 SO,而不是写下副本,你可以回答这个问题。不管怎么说,多谢拉。如果 SO 可以留住像您这样的专家,那么通过 google 提问将导致 SO 得到一个没有重复的答案。

标签: objective-c


【解决方案1】:

你必须使用extern在头文件中声明常量:

extern NSString *const YOUR_CONSTANT;

然后在实现文件 (.m) 中定义值:

NSString *const YOUR_CONSTANT = @"Hello World";

顺便说一句,您的示例代码在所有意图和目的上都是相同的:

fuelBank1.text = OSVShortTermFuelTrim1;

【讨论】:

  • #define YOUR_CONSTANT @"Hello World" 也可以。
  • @holex 取决于你如何测试相等性。
  • 在运行时这样的宏在应用程序的生命周期中只分配一次,它们也可以通过它们自己的指针或它们的内容进行比较,它们最终将是相同的。如果这就是你的意思...
  • @holex 我无法得到你的答案
  • @holex 仅在执行单元内是这样;例如,如果字符串在框架中,那么您的 #define 将无法通过引用进行测试。
猜你喜欢
  • 2019-02-13
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多