如何修复Objective-C中的重复符号错误?

如何修复Objective-C中的重复符号错误?,objective-c,Objective C,该变量位于常量内。h 错误是: duplicate symbol _OSVShortTermFuelTrim1 in: /Users/loximity/Library/Developer/Xcode/DerivedData/AutoCodesApp-hjoxbttreaujifdypikhbngdqihd/Build/Intermediates/AutoCodesApp.build/Debug-iphonesimulator/AutoCodesApp.build/Objects-normal/

该变量位于常量内。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中“


您必须使用
extern
来声明头文件中的常量:

extern NSString *const YOUR_CONSTANT;
然后在实现文件(
.m
)中定义以下值:

NSString *const YOUR_CONSTANT = @"Hello World";
顺便说一句,您的示例代码在所有意图和目的下都是相同的:

fuelBank1.text = OSVShortTermFuelTrim1;

或者
#定义你的_常量@“Hello World”“
也可以工作。@holex取决于您如何测试相等性。在运行时,这样的宏在应用程序的生命周期中只分配一次,并且可以通过它们自己的指针或它们的内容进行比较,它们最终是相同的。如果这就是你的意思…@holex我无法理解你的意思answer@holex只有在执行单元中才是这样;例如,如果字符串在一个框架中,那么您的
#define
将无法通过引用进行测试。@dandan78亲爱的如果您不能贡献,至少不要让提问者失望,这怎么可能是重复的?正如我添加了我自己的代码片段一样。@Adeel也可能会说,如果你不理解它的用途,那么就不要使用它。他们之所以将其标记为重复的问题,是因为这是同一类型的问题,答案可以为您指明正确的方向。您还知道术语
常量
的含义吗?当您在
constant.h
文件中清楚地声明它是一个常量时,为什么要尝试重新分配
osvshortermfueltrim1
?显然,它不是一个常数,因为您希望能够重新分配这些值。此外,常数将用关键字
const
extern
标记。你的
constant.h
文件有误导性。@丹丹78找到答案比写下来容易,我知道如何使用它,而不是写下一个重复的答案。你可以回答这个问题。谢谢你。如果是这样的话,你这样的专家就可以在谷歌上提问,那么SO只会给出一个答案,没有重复。
fuelBank1.text = OSVShortTermFuelTrim1;