【发布时间】:2013-02-18 23:34:57
【问题描述】:
我使用的是 Xcode 4.6,并且我有一个头文件,其中包含我在整个代码中使用的一些常量。我不想使用预处理器指令,因为我希望它们被正确输入等等。
例如,我的一个 .h 文件中有此代码:
static NSString *kErrorCannotDivideByZero = @"Error: Cannot divide by zero";
我在相应的 .m 文件中使用它:
[self showToast:kErrorCannotDivideByZero];
我收到警告:
/path/to/my/headerFile.h:32:18: Unused variable 'kErrorCannotDivideByZero'
我知道这只是一个警告,但其中大约 50 个警告阻塞了我的编译器输出。
为什么我会收到此警告以及如何正确解决?
我对简单地禁止所有未使用的变量警告不感兴趣,因为我确实想要获得合法的警告。
【问题讨论】:
-
您确定在 HEADER 文件中而不是在 .m 文件中包含静态 NSString(并且在标头中只有一个 extern static NSString)不是您的问题的原因吗?我怀疑每次将其包含到 .m 文件中时都会生成一个不同的静态实例。
-
我想要一些可以在整个应用程序中使用的可重用字符串。你有什么建议?
-
正如 Josh 下面所说,“extern NSString *foo;”在标头中,然后在 .m 中声明真正的非静态实例 ONCE。或者只是#define FOO @"StringLiteral"
-
正如我所说,我想避免使用预处理器。回复:在 .h 文件中定义变量,然后在 .m 文件中将它们声明为真实变量:如果我想在我的应用程序的其他部分中使用该变量,我是否必须在每个部分中一遍又一遍地声明它文件?自 90 年代上大学以来,我就没有深入研究过真正的 C 代码。
-
OI。标题中的外部。非外部一次在.m。完毕。你无法避免预处理器。 #define 和 #import 和 #include 都使用它。学会爱它。
标签: objective-c c xcode