iOS中未使用的变量“mystring”警告

时间:2014-09-22 04:48:22

标签: objective-c global-variables

我正在使用Constants.h文件来保存我的所有值。我宣布这样:

static NSString *NAME = @"Name";
static NSString *MAILID = @"Mail-id";
static NSString *ADDRESS = @"Address";

我也在代码中使用此密钥。但它始终显示警告未使用的变量" NAME"

如果我采取

const NSString *NAME = @"Name";

然后显示错误。所以,任何人都可以帮助我,我该如何解决这个警告?

谢谢:)

1 个答案:

答案 0 :(得分:2)

在C中,因此在Objective-C中,static是具有文件级范围的变量。 #import#include都与将头文件的文本复制并粘贴到源文件中具有相同的效果。因此,对于static,包含标题的每个文件都会获得自己的符号NAMEMAILID等的个人副本。如果您不使用它,编译器将因此警告您

const表示不变。如果在星号之前使用,那么它意味着一个常量NSString,它没有很多语义意义,因为NSString是一个不透明的类型。如果您只使用const,那么您还要让包含标题的每个文件重新声明变量。所以你会得到一个错误。

标题中您可能想要的是:

extern NSString *const NAME;

那说:(i)estern - 不是在这里,而是在另一个单位;和(ii)NSString *const - 它是指向NSString的指针,指针内的地址永远不会改变。

然后在任何单个实现文件中添加:

NSString *const NAME = @"NAME";

否则每个编译单元都会坐下来并期望其中一个编译单元定义它。因此,您将收到链接器错误,该符号未定义。